framework/src/main/java/com/yuanchu/limslaboratory/mybatis_config/MyBatisPlusConfig.java
@@ -2,7 +2,7 @@ import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -11,21 +11,6 @@ @Configuration public class MyBatisPlusConfig { // 乐观锁插件 @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); } /** * 开启批量添加 * @return */ @Bean public MySqlInjector sqlInjector() { return new MySqlInjector(); } /** * 需要配置拦截器,不然在AddDevice中的total无法获取到 * @return @@ -33,6 +18,9 @@ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 乐观锁 interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); // 分页配置 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } framework/src/main/java/com/yuanchu/limslaboratory/mybatis_config/MySqlInjector.java
@@ -1,23 +1,24 @@ package com.yuanchu.limslaboratory.mybatis_config; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.core.injector.AbstractMethod; import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector; import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn; import org.springframework.stereotype.Component; import java.util.List; /** * 批量添加 */ @Component public class MySqlInjector extends DefaultSqlInjector { @Override public List<AbstractMethod> getMethodList(Class<?> mapperClass) { List<AbstractMethod> methodList = super.getMethodList(mapperClass); public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) { List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo); //增加自定义方法,字段注解上不等于FieldFill.DEFAULT的字段才会插入 methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.DEFAULT)); methodList.add(new InsertBatchSomeColumn(t->!t.isLogicDelete())); return methodList; } } inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionMaterialController.java
@@ -1,24 +1,9 @@ package com.yuanchu.limslaboratory.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.api.ApiController; import java.util.List; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.limslaboratory.service.InspectionMaterialService; import javax.annotation.Resource; import java.io.Serializable; import java.util.List; /** * (样品)检验单里面的物料(InspectionMaterial)表控制层 inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionProductController.java
@@ -1,11 +1,6 @@ package com.yuanchu.limslaboratory.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.api.ApiController; import java.util.List; import com.yuanchu.limslaboratory.pojo.InspectionProduct; import com.yuanchu.limslaboratory.pojo.vo.InsProductVo; import com.yuanchu.limslaboratory.service.InstrumentService; inspection-server/src/main/java/com/yuanchu/limslaboratory/pojo/LinkDetection.java
@@ -33,38 +33,30 @@ @TableId(value = "id", type = IdType.AUTO) private Integer id; @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "样品编号", required = true, example = "YPBH123456789") private String sampleNumber; @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "样品名称", required = true, example = "发动机") private String sampleName; @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "规格型号", required = true, example = "GGXH-AAAAA") private String specificationsModels; @TableField(fill = FieldFill.INSERT) @NotBlank(message = "请填写单位!") @ApiModelProperty(value = "单位", required = true, example = "百度") private String unit; @TableField(fill = FieldFill.INSERT) @NotNull(message = "请填写样品数量!") @ApiModelProperty(value = "样品数量", required = true, example = "20") private Integer samplesNumber; @TableField(fill = FieldFill.INSERT) @NotBlank(message = "试验不能为空!") @ApiModelProperty(value = "试验", required = true, example = "做梦") private String experiment; @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "备注", example = "通过了") private String remarks; @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "LinkBasicInformation对象Id", hidden = true) private Integer linkBasicId; pom.xml
@@ -32,7 +32,7 @@ <swagger.version>3.0.0</swagger.version> <knife4j-spring-ui.version>3.0.3</knife4j-spring-ui.version> <druid.version>1.2.18</druid.version> <mybatis-plus.version>3.4.0</mybatis-plus.version> <mybatis-plus.version>3.5.3.1</mybatis-plus.version> <openfeign.version>3.1.3</openfeign.version> <feign-okhttp.version>11.0</feign-okhttp.version> <shiro.version>1.5.3</shiro.version> sys/src/main/java/com/yuanchu/limslaboratory/CodeGenerator.java
@@ -1,110 +1,64 @@ package com.yuanchu.limslaboratory; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.InjectionConfig; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; import java.util.ArrayList; import java.util.List; import java.util.Collections; import java.util.Scanner; // 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中 public class CodeGenerator { public static String database_url = "jdbc:mysql://localhost:3306/lims_laboratory?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai"; public static String database_driver_name = "com.mysql.cj.jdbc.Driver"; public static String database_url = "jdbc:mysql://localhost:3306/mom_ocean?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai"; public static String database_username = "root"; public static String database_password= "123456"; public static String author = "江苏鵷雏网络科技有限公司"; public static String model_name = "/inspection-server"; // 如果为分布式填子模块名称,如果不是分布式为空即可 public static String setParent = "com.yuanchu.limslaboratory"; // 包路径 public static Boolean Override = false; // 是否覆盖原来的文件? public static String model_name = "/inspect-server"; // 如果为分布式填子模块名称,如果不是分布式为空即可 public static String setParent = "com.yuanchu.mom"; // 包路径 public static void main(String[] args) { // 代码生成器 AutoGenerator mpg = new AutoGenerator(); String projectPath = System.getProperty("user.dir"); System.out.println(projectPath+"==================="); GlobalConfig gc = new GlobalConfig() // 全局配置 .setOutputDir(projectPath + model_name + "/src/main/java") // 输出路径 .setAuthor(author) // 作者注释 .setOpen(false) // 是否打开 .setSwagger2(true) //实体属性 Swagger2 注解 .setServiceName("%sService") // 设置serviceName的名称去大写I .setFileOverride(Override);// 是否覆盖已生成文件 mpg.setGlobalConfig(gc); // 数据源配置 数据库名 账号密码 DataSourceConfig dsc = new DataSourceConfig() .setUrl(database_url) .setDriverName(database_driver_name) .setUsername(database_username) .setPassword(database_password); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig() .setModuleName(null) .setParent(setParent) .setEntity("pojo");// 包路径 mpg.setPackageInfo(pc); // 自定义配置 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { // to do nothing } }; // 如果模板引擎是 freemarker String templatePath = "/templates/mapper.xml.ftl"; // 如果模板引擎是 velocity // String templatePath = "/templates/mapper.xml.vm"; // 自定义输出配置 List<FileOutConfig> focList = new ArrayList<>(); // 自定义配置会被优先输出 focList.add(new FileOutConfig(templatePath) { @Override public String outputFile(TableInfo tableInfo) { // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化! return projectPath + model_name + "/src/main/resources/mapper/" + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; } }); cfg.setFileOutConfigList(focList); mpg.setCfg(cfg); // 配置模板 TemplateConfig templateConfig = new TemplateConfig() .setXml(null); mpg.setTemplate(templateConfig); // 策略配置 StrategyConfig strategy = new StrategyConfig() .setNaming(NamingStrategy.underline_to_camel) .setColumnNaming(NamingStrategy.underline_to_camel) .setEntityLombokModel(true) .setRestControllerStyle(true) .setInclude(scanner("表名,多个道号分割").split(",")) .setControllerMappingHyphenStyle(true) .setTablePrefix("m_"); mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine()); //如果不调用该方法、就会使用MyBatis-Plus默认的文件生成路径和包路径生成文件、但可以使用上面的PackageConfig做一些简单的配置 mpg.execute(); FastAutoGenerator.create(database_url, database_username, database_password) // 全局配置 .globalConfig(builder -> { builder.author(author) // 设置作者 .commentDate("yyyy-MM-dd hh:mm:ss") //注释日期 .outputDir(projectPath + model_name + "/src/main/java") // 指定输出目录 .disableOpenDir() //禁止打开输出目录,默认打开 ; }) // 包配置 .packageConfig(builder -> { builder.entity("pojo"); builder.parent(setParent) // 设置父包名 .pathInfo(Collections.singletonMap(OutputFile.xml, projectPath + model_name + "/src/main/resources/mapper")); // 设置mapperXml生成路径 }) // 策略配置 .strategyConfig(builder -> { builder.addInclude(scanner("表名,多个空格分割").split(" ")) // 设置需要生成的表名 .addTablePrefix("sys_") // 设置过滤表前缀 // Entity 策略配置 .entityBuilder() .enableLombok() //开启 Lombok .naming(NamingStrategy.underline_to_camel) //数据库表映射到实体的命名策略:下划线转驼峰命 .columnNaming(NamingStrategy.underline_to_camel) //数据库表字段映射到实体的命名策略:下划线转驼峰命 // Mapper 策略配置 .mapperBuilder() .enableFileOverride() // 覆盖已生成文件 // Service 策略配置 .serviceBuilder() .enableFileOverride() // 覆盖已生成文件 .formatServiceFileName("%sService") //格式化 service 接口文件名称,%s进行匹配表名,如 UserService .formatServiceImplFileName("%sServiceImpl") //格式化 service 实现类文件名称,%s进行匹配表名,如 UserServiceImpl // Controller 策略配置 .controllerBuilder() .enableFileOverride() // 覆盖已生成文件 ; }) .execute(); } /**