Commit 529b699c authored by 李驰骋's avatar 李驰骋

代码生成调整

parent 7d5744e3
......@@ -30,6 +30,12 @@
<artifactId>springfox-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
<!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
<dependency>
<groupId>io.swagger</groupId>
......
package com.ximai.web.controller.common;
import com.ximai.common.core.domain.AjaxResult;
import com.ximai.mes.od.service.IOdPurchaseOrderService;
import com.ximai.mes.od.vo.PurchaseOrderDto;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @since created by hyy on 2024-01-23
*/
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("/api")
public class ApiController {
private final IOdPurchaseOrderService purchaseOrderService;
/**
* 接收到的采购订单数据
*/
@PostMapping("od/purchaseOrder/batchInsert")
public AjaxResult batchInsert(@RequestBody List<PurchaseOrderDto> purchaseOrderList) {
log.info("接收到的采购订单数据: [ {} ]", purchaseOrderList);
final int i = purchaseOrderService.batchInsert(purchaseOrderList);
return i > 0 ? AjaxResult.success() : AjaxResult.error();
}
/**
* 接收到的采购订单数据
*/
@PostMapping("od/purchaseOrder/batchSave")
public AjaxResult batchSave(@RequestBody List<PurchaseOrderDto> purchaseOrderList) {
log.info("接收到的采购订单数据: [ {} ]", purchaseOrderList);
final int i = purchaseOrderService.batchSave(purchaseOrderList);
return i > 0 ? AjaxResult.success() : AjaxResult.error();
}
}
//package com.ximai.web.core.config;
//
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import springfox.documentation.builders.ApiInfoBuilder;
//import springfox.documentation.builders.PathSelectors;
//import springfox.documentation.builders.RequestHandlerSelectors;
//import springfox.documentation.spi.DocumentationType;
//import springfox.documentation.spring.web.plugins.Docket;
//import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
//
//@Configuration
//@EnableSwagger2WebMvc
//public class Knife4jConfiguration {
// @Bean(value = "dockerBean")
// public Docket dockerBean() {
// //指定使用Swagger2规范
// Docket docket=new Docket(DocumentationType.SWAGGER_2)
// .apiInfo(new ApiInfoBuilder()
// //描述字段支持Markdown语法
// .description("# Knife4j RESTful APIs")
// .termsOfServiceUrl("https://doc.xiaominfo.com/")
// .version("1.0")
// .build())
// //分组名称
// .groupName("用户服务")
// .select()
// //这里指定Controller扫描包路径
// .apis(RequestHandlerSelectors.basePackage("com.github.xiaoymin.knife4j.controller"))
// .paths(PathSelectors.any())
// .build();
// return docket;
// }
//}
package com.ximai.web.core.config;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import com.ximai.common.config.RuoYiConfig;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
......@@ -15,6 +16,7 @@ import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;
......@@ -24,6 +26,8 @@ import java.util.List;
*/
@Data
@Configuration
@EnableSwagger2
@EnableKnife4j
public class SwaggerConfig {
/**
* 系统基础配置
......@@ -64,8 +68,7 @@ public class SwaggerConfig {
.build()
/* 设置安全模式,swagger可以设置访问token */
.securitySchemes(securitySchemes())
.securityContexts(securityContexts())
.pathMapping(pathMapping);
.securityContexts(securityContexts());
}
/**
......
......@@ -9,7 +9,7 @@ ximai-mes:
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/ximai/uploadPath,Linux配置 /home/ximai/uploadPath)
profile: D:/source_code/j2eeworkspace/bsn-mes/upload
profile: D:/source_code/j2eeworkspace/xiaomi-mes/upload
#profile: /home/www/uploadPath
# 获取ip地址开关
addressEnabled: false
......@@ -42,6 +42,8 @@ logging:
druid:
sql:
Statement: debug
file:
name: ximai-mes.log
# Spring配置
spring:
......@@ -55,9 +57,9 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://192.168.222.136:3306/xm_mes_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: admin
password: t0psunit
url: jdbc:mysql://localhost:3307/mes-new?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭
......
......@@ -22,8 +22,8 @@ ximai-mes:
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
port: 8080
# 服务器的HTTP端口,默认为8081
port: 8088
servlet:
# 应用的访问路径
context-path: /
......@@ -46,6 +46,8 @@ logging:
druid:
sql:
Statement: debug
file:
name: ximai-mes.log
# Spring配置
spring:
......@@ -59,9 +61,9 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://localhost:3307/mes-new?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
url: jdbc:mysql://192.168.222.136:3306/xm_mes_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: admin
password: t0psunit
# 从库数据源
slave:
# 从数据源开关/默认关闭
......
......@@ -3,4 +3,4 @@ spring:
name: mes
profiles:
active:
- test
- dev
package com.ximai.framework.config;
import com.baomidou.mybatisplus.autoconfigure.SpringBootVFS;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import com.github.pagehelper.PageInterceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.apache.ibatis.io.VFS;
import org.springframework.util.ClassUtils;
import javax.sql.DataSource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
/**
* @ Author: chicheng.li
* @ Date : 2024/1/25
*/
@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {
static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
@Autowired
private Environment env;
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
/**
* pagehelper的分页插件
*/
@Bean
public PageInterceptor pageInterceptor() {
return new PageInterceptor();
}
/*@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
String mapperLocations = env.getProperty("mybatis-plus.mapper-locations");
//String configLocation = env.getProperty("mybatis-plus.config-location");
VFS.addImplClass(SpringBootVFS.class);
final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
String typeAliasesPackage = setTypeAliasesPackage("com.ximai.**.domain");
sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
//sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
return sessionFactory.getObject();
}*/
public static String setTypeAliasesPackage(String typeAliasesPackage)
{
ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
List<String> allResult = new ArrayList<String>();
try
{
for (String aliasesPackage : typeAliasesPackage.split(","))
{
List<String> result = new ArrayList<String>();
aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
+ ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN;
Resource[] resources = resolver.getResources(aliasesPackage);
if (resources != null && resources.length > 0)
{
MetadataReader metadataReader = null;
for (Resource resource : resources)
{
if (resource.isReadable())
{
metadataReader = metadataReaderFactory.getMetadataReader(resource);
try
{
result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
}
}
if (result.size() > 0)
{
HashSet<String> hashResult = new HashSet<String>(result);
allResult.addAll(hashResult);
}
}
if (allResult.size() > 0)
{
typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
}
else
{
throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包");
}
}
catch (IOException e)
{
e.printStackTrace();
}
return typeAliasesPackage;
}
public Resource[] resolveMapperLocations(String[] mapperLocations)
{
ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
List<Resource> resources = new ArrayList<Resource>();
if (mapperLocations != null)
{
for (String mapperLocation : mapperLocations)
{
try
{
Resource[] mappers = resourceResolver.getResources(mapperLocation);
resources.addAll(Arrays.asList(mappers));
}
catch (IOException e)
{
// ignore
}
}
}
return resources.toArray(new Resource[resources.size()]);
}
}
......@@ -104,6 +104,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
"/profile/**"
).permitAll()
.antMatchers("/swagger-ui.html").anonymous()
.antMatchers("*/doc.html").anonymous()
.antMatchers("/ureport/**").anonymous()
.antMatchers("/swagger-resources/**").anonymous()
.antMatchers("/webjars/**").anonymous()
......
......@@ -249,6 +249,33 @@ public class GenTableServiceImpl implements IGenTableService {
}
}
@Override
public void generatorCode(GenTable table) {
// 设置主键列信息
setPkColumn(table);
VelocityInitializer.initVelocity();
VelocityContext context = VelocityUtils.prepareContext(table);
// 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
for (String template : templates) {
if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) {
// 渲染模板
StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8);
tpl.merge(context, sw);
try {
String path = getGenPath(table, template);
FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8);
} catch (IOException e) {
throw new ServiceException("渲染模板失败,表名:" + table.getTableName());
}
}
}
}
/**
* 同步数据库
*
......@@ -446,7 +473,7 @@ public class GenTableServiceImpl implements IGenTableService {
public static String getGenPath(GenTable table, String template) {
String genPath = table.getGenPath();
if (StringUtils.equals(genPath, "/")) {
return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table);
return System.getProperty("user.dir") + File.separator + "mes/src" + File.separator + VelocityUtils.getFileName(template, table);
}
return genPath + File.separator + VelocityUtils.getFileName(template, table);
}
......
......@@ -96,6 +96,14 @@ public interface IGenTableService
*/
public void generatorCode(String tableName);
/**
* 生成代码(自定义路径)
*
* @param table 表名称
* @return 数据
*/
public void generatorCode(GenTable table);
/**
* 同步数据库
*
......
......@@ -128,6 +128,11 @@ public class VelocityUtils
{
List<String> templates = new ArrayList<String>();
templates.add("vm/java/domain.java.vm");
templates.add("vm/java/dto-query.java.vm");
templates.add("vm/java/dto-create.java.vm");
templates.add("vm/java/dto-update.java.vm");
templates.add("vm/java/dto-excelExport.java.vm");
templates.add("vm/java/dto-excelImport.java.vm");
templates.add("vm/java/mapper.java.vm");
templates.add("vm/java/service.java.vm");
templates.add("vm/java/serviceImpl.java.vm");
......@@ -175,6 +180,26 @@ public class VelocityUtils
{
fileName = StringUtils.format("{}/domain/{}.java", javaPath, className);
}
if (template.contains("dto-query.java.vm"))
{
fileName = StringUtils.format("{}/dto/{}Dto.java", javaPath, className);
}
if (template.contains("dto-create.java.vm"))
{
fileName = StringUtils.format("{}/dto/{}Create.java", javaPath, className);
}
if (template.contains("dto-update.java.vm"))
{
fileName = StringUtils.format("{}/dto/{}Update.java", javaPath, className);
}
if (template.contains("dto-excelImport.java.vm"))
{
fileName = StringUtils.format("{}/dto/{}ExcelImport.java", javaPath, className);
}
if (template.contains("dto-excelExport.java.vm"))
{
fileName = StringUtils.format("{}/dto/{}ExcelExport.java", javaPath, className);
}
if (template.contains("sub-domain.java.vm") && StringUtils.equals(GenConstants.TPL_SUB, genTable.getTplCategory()))
{
fileName = StringUtils.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName());
......
......@@ -16,9 +16,15 @@ import com.ximai.common.annotation.Log;
import com.ximai.common.core.controller.BaseController;
import com.ximai.common.core.domain.AjaxResult;
import com.ximai.common.enums.BusinessType;
import io.swagger.annotations.ApiOperation;
import ${packageName}.domain.${ClassName};
import ${packageName}.dto.${ClassName}Dto;
import ${packageName}.dto.${ClassName}Create;
import ${packageName}.dto.${ClassName}Update;
import ${packageName}.dto.${ClassName}ExcelExport;
import ${packageName}.service.I${ClassName}Service;
import com.ximai.common.utils.poi.ExcelUtil;
import cn.hutool.core.bean.BeanUtil;
#if($table.crud || $table.sub)
import com.ximai.common.core.page.TableDataInfo;
#elseif($table.tree)
......@@ -40,19 +46,20 @@ public class ${ClassName}Controller extends BaseController
/**
* 查询${functionName}列表
*/
@ApiOperation("查询${functionName}列表")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
@GetMapping("/list")
#if($table.crud || $table.sub)
public TableDataInfo list(${ClassName} ${className})
public TableDataInfo<${ClassName}Dto> list(${ClassName} ${className})
{
startPage();
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
List<${ClassName}Dto> list = ${className}Service.select${ClassName}List(${className});
return getDataTable(list);
}
#elseif($table.tree)
public AjaxResult list(${ClassName} ${className})
public AjaxResult<${ClassName}Dto> list(${ClassName} ${className})
{
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
List<${ClassName}Dto> list = ${className}Service.select${ClassName}List(${className});
return AjaxResult.success(list);
}
#end
......@@ -60,51 +67,57 @@ public class ${ClassName}Controller extends BaseController
/**
* 导出${functionName}列表
*/
@ApiOperation("导出${functionName}列表")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')")
@Log(title = "${functionName}", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ${ClassName} ${className})
{
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class);
util.exportExcel(response, list, "${functionName}数据");
List<${ClassName}Dto> list = ${className}Service.select${ClassName}List(${className});
ExcelUtil<${ClassName}ExcelExport> util = new ExcelUtil<${ClassName}ExcelExport>(${ClassName}ExcelExport.class);
List<${ClassName}ExcelExport> tempList = BeanUtil.copyToList(list, ${ClassName}ExcelExport.class);
util.exportExcel(response, tempList, "${functionName}数据");
}
/**
* 获取${functionName}详细信息
*/
@ApiOperation("获取${functionName}详细信息")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')")
@GetMapping(value = "/{${pkColumn.javaField}}")
public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField})
public AjaxResult<${ClassName}Dto> getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField})
{
return AjaxResult.success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField}));
return AjaxResult.success(${className}Service.select${ClassName}DtoBy${pkColumn.capJavaField}(${pkColumn.javaField}));
}
/**
* 新增${functionName}
*/
@ApiOperation("新增${functionName}")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')")
@Log(title = "${functionName}", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody ${ClassName} ${className})
public AjaxResult add(@RequestBody ${ClassName}Create ${className}Create)
{
return toAjax(${className}Service.insert${ClassName}(${className}));
return toAjax(${className}Service.insert${ClassName}(${className}Create));
}
/**
* 修改${functionName}
*/
@ApiOperation("修改${functionName}")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')")
@Log(title = "${functionName}", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody ${ClassName} ${className})
public AjaxResult edit(@RequestBody ${ClassName}Update ${className}Update)
{
return toAjax(${className}Service.update${ClassName}(${className}));
return toAjax(${className}Service.update${ClassName}(${className}Update));
}
/**
* 删除${functionName}
*/
@ApiOperation("删除${functionName}")
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')")
@Log(title = "${functionName}", businessType = BusinessType.DELETE)
@DeleteMapping("/{${pkColumn.javaField}s}")
......
......@@ -3,10 +3,13 @@ package ${packageName}.domain;
#foreach ($import in $importList)
import ${import};
#end
import com.ximai.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
#if($table.crud || $table.sub)
import com.ximai.common.core.domain.BaseEntity;
#elseif($table.tree)
import com.ximai.common.core.domain.TreeEntity;
#end
/**
......@@ -20,8 +23,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
#elseif($table.tree)
#set($Entity="TreeEntity")
#end
public class ${ClassName} extends ${Entity}
{
@Data
public class ${ClassName} extends ${Entity} {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
......@@ -35,12 +38,12 @@ public class ${ClassName} extends ${Entity}
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
@ApiModelProperty(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
@ApiModelProperty(name = "${comment}")
#else
@Excel(name = "${comment}")
@ApiModelProperty(name = "${comment}")
#end
#end
#if($column.javaField == $pkColumn.javaField)
......@@ -55,51 +58,6 @@ public class ${ClassName} extends ${Entity}
private List<${subClassName}> ${subclassName}List;
#end
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
public void set${AttrName}($column.javaType $column.javaField)
{
this.$column.javaField = $column.javaField;
}
public $column.javaType get${AttrName}()
{
return $column.javaField;
}
#end
#end
#if($table.sub)
public List<${subClassName}> get${subClassName}List()
{
return ${subclassName}List;
}
public void set${subClassName}List(List<${subClassName}> ${subclassName}List)
{
this.${subclassName}List = ${subclassName}List;
}
#end
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
#foreach ($column in $columns)
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
.append("${column.javaField}", get${AttrName}())
#end
#if($table.sub)
.append("${subclassName}List", get${subClassName}List())
#end
.toString();
}
}
package ${packageName}.dto;
#foreach ($import in $importList)
import ${import};
#end
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
* ${functionName}对象 ${tableName}
*
* @author ${author}
* @date ${datetime}
*/
@Data
public class ${ClassName}Create {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@ApiModelProperty(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "${comment}")
#else
@ApiModelProperty(name = "${comment}")
#end
#end
#if($column.javaField == $pkColumn.javaField)
@TableId
#end
private $column.javaType $column.javaField;
#end
#end
#if($table.sub)
/** $table.subTable.functionName信息 */
private List<${subClassName}> ${subclassName}List;
#end
}
package ${packageName}.dto;
#foreach ($import in $importList)
import ${import};
#end
import com.ximai.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
#if($table.crud || $table.sub)
import com.ximai.common.core.domain.BaseEntity;
#elseif($table.tree)
import com.ximai.common.core.domain.TreeEntity;
#end
/**
* ${functionName}对象 ${tableName}
*
* @author ${author}
* @date ${datetime}
*/
@Data
public class ${ClassName}ExcelExport {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@ApiModelProperty(name = "${comment}", readConverterExp = "$column.readConverterExp()")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "${comment}")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
#else
@ApiModelProperty(name = "${comment}")
@Excel(name = "${comment}")
#end
#end
#if($column.javaField == $pkColumn.javaField)
@TableId
#end
private $column.javaType $column.javaField;
#end
#end
#if($table.sub)
/** $table.subTable.functionName信息 */
private List<${subClassName}> ${subclassName}List;
#end
}
package ${packageName}.dto;
#foreach ($import in $importList)
import ${import};
#end
import com.ximai.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
#if($table.crud || $table.sub)
import com.ximai.common.core.domain.BaseEntity;
#elseif($table.tree)
import com.ximai.common.core.domain.TreeEntity;
#end
/**
* ${functionName}对象 ${tableName}
*
* @author ${author}
* @date ${datetime}
*/
@Data
public class ${ClassName}ExcelImport {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@ApiModelProperty(name = "${comment}", readConverterExp = "$column.readConverterExp()")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "${comment}")
@Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
#else
@ApiModelProperty(name = "${comment}")
@Excel(name = "${comment}")
#end
#end
#if($column.javaField == $pkColumn.javaField)
@TableId
#end
private $column.javaType $column.javaField;
#end
#end
#if($table.sub)
/** $table.subTable.functionName信息 */
private List<${subClassName}> ${subclassName}List;
#end
}
package ${packageName}.dto;
#foreach ($import in $importList)
import ${import};
#end
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
* ${functionName}对象 ${tableName}
*
* @author ${author}
* @date ${datetime}
*/
@Data
public class ${ClassName}Dto {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@ApiModelProperty(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "${comment}")
#else
@ApiModelProperty(name = "${comment}")
#end
#end
#if($column.javaField == $pkColumn.javaField)
@TableId
#end
private $column.javaType $column.javaField;
#end
#end
#if($table.sub)
/** $table.subTable.functionName信息 */
private List<${subClassName}> ${subclassName}List;
#end
}
package ${packageName}.dto;
#foreach ($import in $importList)
import ${import};
#end
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
* ${functionName}对象 ${tableName}
*
* @author ${author}
* @date ${datetime}
*/
@Data
public class ${ClassName}Update {
private static final long serialVersionUID = 1L;
#foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf("("))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@ApiModelProperty(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(name = "${comment}")
#else
@ApiModelProperty(name = "${comment}")
#end
#end
#if($column.javaField == $pkColumn.javaField)
@TableId
#end
private $column.javaType $column.javaField;
#end
#end
#if($table.sub)
/** $table.subTable.functionName信息 */
private List<${subClassName}> ${subclassName}List;
#end
}
......@@ -3,6 +3,7 @@ package ${packageName}.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import ${packageName}.domain.${ClassName};
import ${packageName}.dto.${ClassName}Dto;
#if($table.sub)
import ${packageName}.domain.${subClassName};
#end
......@@ -21,7 +22,7 @@ public interface ${ClassName}Mapper extends BaseMapper<${ClassName}>
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
public ${ClassName}Dto select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/**
* 查询${functionName}列表
......@@ -29,7 +30,7 @@ public interface ${ClassName}Mapper extends BaseMapper<${ClassName}>
* @param ${className} ${functionName}
* @return ${functionName}集合
*/
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
public List<${ClassName}Dto> select${ClassName}List(${ClassName} ${className});
/**
* 新增${functionName}
......
package ${packageName}.service;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import ${packageName}.domain.${ClassName};
import ${packageName}.dto.${ClassName}Create;
import ${packageName}.dto.${ClassName}Update;
import ${packageName}.dto.${ClassName}Dto;
/**
* ${functionName}Service接口
......@@ -13,7 +17,15 @@ public interface I${ClassName}Service
{
/**
* 查询${functionName}
*
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
public ${ClassName}Dto select${ClassName}DtoBy${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
......@@ -21,11 +33,19 @@ public interface I${ClassName}Service
/**
* 查询${functionName}列表
*
*
* @param ${className} ${functionName}
* @return ${functionName}集合
*/
public List<${ClassName}> select${ClassName}List(${ClassName} ${className});
public List<${ClassName}Dto> select${ClassName}List(${ClassName} ${className});
/**
* 查询${functionName}列表
*
* @param ${className}Query ${functionName}
* @return ${functionName}集合
*/
public List<${ClassName}> select${ClassName}List(QueryWrapper<${ClassName}> ${className}Query);
/**
* 新增${functionName}
......@@ -33,7 +53,7 @@ public interface I${ClassName}Service
* @param ${className} ${functionName}
* @return 结果
*/
public int insert${ClassName}(${ClassName} ${className});
public int insert${ClassName}(${ClassName}Create ${className});
/**
* 修改${functionName}
......@@ -41,7 +61,7 @@ public interface I${ClassName}Service
* @param ${className} ${functionName}
* @return 结果
*/
public int update${ClassName}(${ClassName} ${className});
public int update${ClassName}(${ClassName}Update ${className});
/**
* 批量删除${functionName}
......
package ${packageName}.service.impl;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
#foreach ($column in $columns)
#if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
import com.ximai.common.utils.data.DateUtils;
......@@ -10,6 +11,7 @@ import com.ximai.common.utils.SecurityUtils;
#end
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.hutool.core.bean.BeanUtil;
#if($table.sub)
import java.util.ArrayList;
import com.ximai.common.utils.data.StringUtils;
......@@ -18,6 +20,9 @@ import ${packageName}.domain.${subClassName};
#end
import ${packageName}.mapper.${ClassName}Mapper;
import ${packageName}.domain.${ClassName};
import ${packageName}.dto.${ClassName}Create;
import ${packageName}.dto.${ClassName}Update;
import ${packageName}.dto.${ClassName}Dto;
import ${packageName}.service.I${ClassName}Service;
/**
......@@ -39,11 +44,23 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
* @return ${functionName}
*/
@Override
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
public ${ClassName}Dto select${ClassName}DtoBy${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
{
return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
}
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
@Override
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
{
return ${className}Mapper.selectById(${pkColumn.javaField});
}
/**
* 查询${functionName}列表
*
......@@ -51,22 +68,34 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
* @return ${functionName}
*/
@Override
public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
public List<${ClassName}Dto> select${ClassName}List(${ClassName} ${className})
{
return ${className}Mapper.select${ClassName}List(${className});
}
/**
* 查询${functionName}列表
*
* @param ${className}Query ${functionName}
* @return ${functionName}
*/
@Override
public List<${ClassName}> select${ClassName}List(QueryWrapper<${ClassName}> ${className}Query)
{
return ${className}Mapper.selectList(${className}Query);
}
/**
* 新增${functionName}
*
* @param ${className} ${functionName}
* @param ${className}Create ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int insert${ClassName}(${ClassName} ${className})
public int insert${ClassName}(${ClassName}Create ${className}Create)
{
#foreach ($column in $columns)
#if($column.javaField == 'createTime')
......@@ -81,6 +110,8 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
insert${subClassName}(${className});
return rows;
#else
${ClassName} ${className} = new ${ClassName}();
BeanUtil.copyProperties(proBom1Create, ${className});
return ${className}Mapper.insert${ClassName}(${className});
#end
}
......@@ -88,14 +119,14 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
/**
* 修改${functionName}
*
* @param ${className} ${functionName}
* @param ${className}Update ${functionName}
* @return 结果
*/
#if($table.sub)
@Transactional
#end
@Override
public int update${ClassName}(${ClassName} ${className})
public int update${ClassName}(${ClassName}Update ${className}Update)
{
#foreach ($column in $columns)
#if($column.javaField == 'updateTime')
......@@ -109,6 +140,8 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
insert${subClassName}(${className});
#end
${ClassName} ${className} = new ${ClassName}();
BeanUtil.copyProperties(proBom1Update, ${className});
return ${className}Mapper.update${ClassName}(${className});
}
......
......@@ -3,11 +3,17 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${packageName}.mapper.${ClassName}Mapper">
<resultMap type="${ClassName}" id="${ClassName}Result">
#foreach ($column in $columns)
<result property="${column.javaField}" column="${column.columnName}" />
#end
#foreach ($column in $columns)
<result property="${column.javaField}" column="${column.columnName}" />
#end
</resultMap>
<resultMap type="${packageName}.dto.${ClassName}Dto" id="${ClassName}Result2">
#foreach ($column in $columns)
<result property="${column.javaField}" column="${column.columnName}" />
#end
</resultMap>
#if($table.sub)
......@@ -26,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName}
</sql>
<select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result">
<select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result2">
<include refid="select${ClassName}Vo"/>
<where>
#foreach($column in $columns)
......@@ -58,7 +64,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
</select>
<select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end">
<select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result2#end">
#if($table.crud || $table.tree)
<include refid="select${ClassName}Vo"/>
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
......
package com.ximai.generator;
import com.ximai.generator.domain.GenTable;
import com.ximai.generator.domain.GenTableColumn;
import com.ximai.generator.service.GenTableServiceImpl;
import java.util.ArrayList;
import java.util.List;
public class BuildUtil {
public static void main(String[] args) {
GenTableServiceImpl genTableService = new GenTableServiceImpl();
GenTable genTable = new GenTable();
List<GenTableColumn> columns = new ArrayList<>();
columns.add(new GenTableColumn(){{
setColumnName("process_name");
setColumnComment("工序名称");
setColumnId(1l);
setJavaType("String");
setJavaField("processName");
setIsPk("0");
setIsInsert("1");
setIsEdit("1");
setIsList("1");
setIsQuery("1");
setSort(1);
}});
columns.add(new GenTableColumn(){{
setColumnName("process_code");
setColumnComment("工序编码");
setColumnId(2l);
setJavaType("String");
setJavaField("processCode");
setIsPk("0");
setIsInsert("1");
setIsEdit("1");
setIsList("1");
setIsQuery("1");
setSort(2);
}});
columns.add(new GenTableColumn(){{
setColumnName("process_id");
setColumnComment("工序ID");
setColumnId(3l);
setJavaType("Long");
setJavaField("processId");
setIsPk("0");
setIsInsert("1");
setIsEdit("1");
setIsList("1");
setIsQuery("1");
setSort(3);
}});
columns.add(new GenTableColumn(){{
setColumnName("id");
setColumnComment("ID");
setColumnId(4l);
setJavaType("Long");
setJavaField("id");
setIsPk("1");
setIsInsert("1");
setIsEdit("0");
setIsList("0");
setIsQuery("0");
setSort(4);
}});
columns.add(new GenTableColumn(){{
setColumnName("start_time");
setColumnComment("开始生产时间");
setColumnId(5l);
setJavaType("Date");
setJavaField("startTime");
setIsPk("1");
setIsInsert("1");
setIsEdit("1");
setIsList("1");
setIsQuery("0");
setSort(5);
}});
columns.add(new GenTableColumn(){{
setColumnName("quantity_produced");
setColumnComment("已生产数量");
setColumnId(6l);
setJavaType("BigDecimal");
setJavaField("quantityProduced");
setIsPk("1");
setIsInsert("1");
setIsEdit("1");
setIsList("1");
setIsQuery("0");
setSort(6);
}});
columns.add(new GenTableColumn(){{
setColumnName("is_formal");
setColumnComment("是否正式产品");
setColumnId(7l);
setJavaType("Integer");
setJavaField("isFormal");
setIsPk("1");
setIsInsert("1");
setIsEdit("1");
setIsList("1");
setIsQuery("0");
setSort(7);
}});
genTable.setColumns(columns);
genTable.setTableName("pro_bom");
genTable.setTableComment("BOM表");
genTable.setClassName("ProBom1");
genTable.setTplCategory("crud");
genTable.setPackageName("com.ximai.mes.md");
genTable.setModuleName("md");
genTable.setBusinessName("md.basic");
genTable.setFunctionName("BOM");
genTable.setFunctionAuthor("chicheng.li");
genTable.setGenPath("/");
genTableService.generatorCode(genTable);
}
}
......@@ -15,9 +15,6 @@ import org.springframework.web.bind.annotation.PostMapping;
contextId = "SapServiceClient"
)
public interface SapService {
//http://192.168.3.109:8000/sap/bc/erp_ep/bd_mastdata/material?sap-client=300
//密码 Bsn123456
//用户名 rest_user
/**
* 根据字典编码(字段名)查询数据字典
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment