ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
@@ -65,9 +65,9 @@ * ååºè¯·æ±åé¡µæ°æ® */ @SuppressWarnings({ "rawtypes", "unchecked" }) protected TableDataInfo getDataTable(List<?> list) protected <T> TableDataInfo<T> getDataTable(List<T> list) { TableDataInfo rspData = new TableDataInfo(); TableDataInfo<T> rspData = new TableDataInfo(); rspData.setCode(HttpStatus.HTTP_OK); rspData.setMsg("æ¥è¯¢æå"); rspData.setRows(list); @@ -81,7 +81,7 @@ * @param rows å½±åè¡æ° * @return æä½ç»æ */ protected AjaxResult toAjax(int rows) protected AjaxResult<Void> toAjax(int rows) { return rows > 0 ? AjaxResult.success() : AjaxResult.error(); } @@ -92,7 +92,7 @@ * @param result ç»æ * @return æä½ç»æ */ protected AjaxResult toAjax(boolean result) protected AjaxResult<Void> toAjax(boolean result) { return result ? success() : error(); } @@ -100,7 +100,7 @@ /** * è¿åæå */ public AjaxResult success() public AjaxResult<Void> success() { return AjaxResult.success(); } @@ -108,7 +108,7 @@ /** * è¿åå¤±è´¥æ¶æ¯ */ public AjaxResult error() public AjaxResult<Void> error() { return AjaxResult.error(); } @@ -116,7 +116,7 @@ /** * è¿åæåæ¶æ¯ */ public AjaxResult success(String message) public AjaxResult<Void> success(String message) { return AjaxResult.success(message); } @@ -124,7 +124,7 @@ /** * è¿åå¤±è´¥æ¶æ¯ */ public AjaxResult error(String message) public AjaxResult<Void> error(String message) { return AjaxResult.error(message); } ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java
@@ -2,6 +2,7 @@ import cn.hutool.core.lang.Validator; import cn.hutool.http.HttpStatus; import lombok.Data; import java.util.HashMap; @@ -10,7 +11,7 @@ * * @author ruoyi */ public class AjaxResult extends HashMap<String, Object> public class AjaxResult<T> extends HashMap<String, Object> { private static final long serialVersionUID = 1L; @@ -22,6 +23,17 @@ /** æ°æ®å¯¹è±¡ */ public static final String DATA_TAG = "data"; public Integer getCode(){ return (Integer) super.get(CODE_TAG); } public String getMsg(){ return (String) super.get(MSG_TAG); } public T getData(){ return (T) super.get(DATA_TAG); } /** * åå§åä¸ä¸ªæ°å建ç AjaxResult 对象ï¼ä½¿å ¶è¡¨ç¤ºä¸ä¸ªç©ºæ¶æ¯ã @@ -49,7 +61,7 @@ * @param msg è¿åå 容 * @param data æ°æ®å¯¹è±¡ */ public AjaxResult(int code, String msg, Object data) public AjaxResult(int code, String msg, T data) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); @@ -64,7 +76,7 @@ * * @return æåæ¶æ¯ */ public static AjaxResult success() public static AjaxResult<Void> success() { return AjaxResult.success("æä½æå"); } @@ -74,7 +86,7 @@ * * @return æåæ¶æ¯ */ public static AjaxResult success(Object data) public static <T> AjaxResult<T> success(T data) { return AjaxResult.success("æä½æå", data); } @@ -85,7 +97,7 @@ * @param msg è¿åå 容 * @return æåæ¶æ¯ */ public static AjaxResult success(String msg) public static AjaxResult<Void> success(String msg) { return AjaxResult.success(msg, null); } @@ -97,7 +109,7 @@ * @param data æ°æ®å¯¹è±¡ * @return æåæ¶æ¯ */ public static AjaxResult success(String msg, Object data) public static <T> AjaxResult<T> success(String msg, T data) { return new AjaxResult(HttpStatus.HTTP_OK, msg, data); } @@ -107,7 +119,7 @@ * * @return */ public static AjaxResult error() public static AjaxResult<Void> error() { return AjaxResult.error("æä½å¤±è´¥"); } @@ -118,7 +130,7 @@ * @param msg è¿åå 容 * @return è¦åæ¶æ¯ */ public static AjaxResult error(String msg) public static AjaxResult<Void> error(String msg) { return AjaxResult.error(msg, null); } @@ -130,7 +142,7 @@ * @param data æ°æ®å¯¹è±¡ * @return è¦åæ¶æ¯ */ public static AjaxResult error(String msg, Object data) public static <T> AjaxResult<T> error(String msg, T data) { return new AjaxResult(HttpStatus.HTTP_INTERNAL_ERROR, msg, data); } @@ -142,7 +154,7 @@ * @param msg è¿åå 容 * @return è¦åæ¶æ¯ */ public static AjaxResult error(int code, String msg) public static AjaxResult<Void> error(int code, String msg) { return new AjaxResult(code, msg, null); } ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java
@@ -8,7 +8,7 @@ * * @author ruoyi */ public class TableDataInfo implements Serializable public class TableDataInfo<T> implements Serializable { private static final long serialVersionUID = 1L; @@ -16,7 +16,7 @@ private long total; /** åè¡¨æ°æ® */ private List<?> rows; private List<T> rows; /** æ¶æ¯ç¶æç */ private int code; @@ -37,7 +37,7 @@ * @param list åè¡¨æ°æ® * @param total æ»è®°å½æ° */ public TableDataInfo(List<?> list, int total) public TableDataInfo(List<T> list, int total) { this.rows = list; this.total = total; @@ -53,12 +53,12 @@ this.total = total; } public List<?> getRows() public List<T> getRows() { return rows; } public void setRows(List<?> rows) public void setRows(List<T> rows) { this.rows = rows; } ruoyi-framework/src/main/java/com/ruoyi/framework/config/MybatisPlusConfig.java
@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.inner.IllegalSQLInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.ruoyi.framework.mybatisplus.CreateAndUpdateMetaObjectHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -83,10 +84,10 @@ * å å¯¹è±¡åæ®µå¡«å æ§å¶å¨ * https://baomidou.com/guide/auto-fill-metainfo.html */ // @Bean // public MetaObjectHandler metaObjectHandler() { // return new MyMetaObjectHandler(); // } @Bean public MetaObjectHandler metaObjectHandler() { return new CreateAndUpdateMetaObjectHandler(); } /** * sqlæ³¨å ¥å¨é ç½® ruoyi-framework/src/main/java/com/ruoyi/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,67 @@ package com.ruoyi.framework.mybatisplus; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.ruoyi.common.utils.SecurityUtils; import org.apache.ibatis.reflection.MetaObject; import java.util.Date; /** * @author woo * @date 2021/3/11 */ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { //region å¤çåå»ºäººä¿¡æ¯ Object createBy = this.getFieldValByName("createBy", metaObject); Object createTime = this.getFieldValByName("createTime", metaObject); if (createBy == null) { createBy = SecurityUtils.getUsername(); this.setFieldValByName("createBy", createBy, metaObject); } if (createTime == null) { createTime = new Date(); this.setFieldValByName("createTime", createTime, metaObject); } //endregion //region å¤çä¿®æ¹äººä¿¡æ¯ Object updateBy = this.getFieldValByName("updateBy", metaObject); Object updateTime = this.getFieldValByName("updateTime", metaObject); if (updateBy == null) { updateBy = createBy; this.setFieldValByName("updateBy", updateBy, metaObject); } if (updateTime == null) { updateTime = createTime; this.setFieldValByName("updateTime", updateTime, metaObject); } //endregion } @Override public void updateFill(MetaObject metaObject) { //region å¤çä¿®æ¹äººä¿¡æ¯ Object updateBy = this.getFieldValByName("updateBy", metaObject); Object updateTime = this.getFieldValByName("updateTime", metaObject); if (updateBy == null) { updateBy = SecurityUtils.getUsername(); this.setFieldValByName("updateBy", updateBy, metaObject); } if (updateTime == null) { updateTime = new Date(); this.setFieldValByName("updateTime", updateTime, metaObject); } //endregion } @Override public boolean openInsertFill() { return true; } @Override public boolean openUpdateFill() { return true; } } ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
@@ -129,6 +129,10 @@ { List<String> templates = new ArrayList<String>(); templates.add("vm/java/domain.java.vm"); templates.add("vm/java/vo.java.vm"); templates.add("vm/java/queryBo.java.vm"); templates.add("vm/java/addBo.java.vm"); templates.add("vm/java/editBo.java.vm"); templates.add("vm/java/mapper.java.vm"); templates.add("vm/java/service.java.vm"); templates.add("vm/java/serviceImpl.java.vm"); @@ -176,6 +180,22 @@ { fileName = StrUtil.format("{}/domain/{}.java", javaPath, className); } if (template.contains("vo.java.vm")) { fileName = StrUtil.format("{}/vo/{}Vo.java", javaPath, className); } if (template.contains("queryBo.java.vm")) { fileName = StrUtil.format("{}/bo/{}QueryBo.java", javaPath, className); } if (template.contains("addBo.java.vm")) { fileName = StrUtil.format("{}/bo/{}AddBo.java", javaPath, className); } if (template.contains("editBo.java.vm")) { fileName = StrUtil.format("{}/bo/{}EditBo.java", javaPath, className); } if (template.contains("sub-domain.java.vm") && StrUtil.equals(GenConstants.TPL_SUB, genTable.getTplCategory())) { fileName = StrUtil.format("{}/domain/{}.java", javaPath, genTable.getSubTable().getClassName()); ruoyi-generator/src/main/resources/vm/java/addBo.java.vm
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,36 @@ package ${packageName}.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; #foreach ($import in $importList) import ${import}; #end /** * ${functionName}æ·»å 对象 ${tableName} * * @author ${author} * @date ${datetime} */ @Data @ApiModel("${functionName}æ·»å 对象") public class ${ClassName}AddBo { private static final long serialVersionUID = 1L; #foreach ($column in $columns) #if($column.isInsert && $column.isPk!=1) /** $column.columnComment */ @ApiModelProperty("$column.columnComment") private $column.javaType $column.javaField; #end #end #if($table.sub) /** $table.subTable.functionNameä¿¡æ¯ */ @ApiModelProperty("$table.subTable.functionName") private List<${subClassName}> ${subclassName}List; #end } ruoyi-generator/src/main/resources/vm/java/controller.java.vm
@@ -18,13 +18,18 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import ${packageName}.domain.${ClassName}; import ${packageName}.vo.${ClassName}Vo; import ${packageName}.bo.${ClassName}QueryBo; import ${packageName}.bo.${ClassName}AddBo; import ${packageName}.bo.${ClassName}EditBo; import ${packageName}.service.I${ClassName}Service; import com.ruoyi.common.utils.poi.ExcelUtil; #if($table.crud || $table.sub) import com.ruoyi.common.core.page.TableDataInfo; #elseif($table.tree) #end import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; /** * ${functionName}Controller @@ -32,6 +37,7 @@ * @author ${author} * @date ${datetime} */ @Api(value = "${functionName}æ§å¶å¨", tags = {"${functionName}管ç"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/${moduleName}/${businessName}" ) @@ -42,17 +48,18 @@ /** * æ¥è¯¢${functionName}å表 */ @ApiOperation("æ¥è¯¢${functionName}å表") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')") @GetMapping("/list") #if($table.crud || $table.sub) public TableDataInfo list(${ClassName} ${className}) { public TableDataInfo<${ClassName}Vo> list(${ClassName}QueryBo bo) { startPage(); List<${ClassName}> list = i${ClassName}Service.queryList(${className}); List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo); return getDataTable(list); } #elseif($table.tree) public AjaxResult list(${ClassName} ${className}) { List<${ClassName}> list = i${ClassName}Service.queryList(${className}); public AjaxResult<${ClassName}Vo> list(${ClassName}QueryBo bo) { List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo); return AjaxResult.success(list); } #end @@ -60,51 +67,56 @@ /** * 导åº${functionName}å表 */ @ApiOperation("导åº${functionName}å表") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')" ) @Log(title = "${functionName}" , businessType = BusinessType.EXPORT) @GetMapping("/export" ) public AjaxResult export(${ClassName} ${className}) { List<${ClassName}> list = i${ClassName}Service.queryList(${className}); ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class); public AjaxResult<${ClassName}Vo> export(${ClassName}QueryBo bo) { List<${ClassName}Vo> list = i${ClassName}Service.queryList(bo); ExcelUtil<${ClassName}Vo> util = new ExcelUtil<${ClassName}Vo>(${ClassName}Vo.class); return util.exportExcel(list, "${businessName}" ); } /** * è·å${functionName}详ç»ä¿¡æ¯ */ @ApiOperation("è·å${functionName}详ç»ä¿¡æ¯") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')" ) @GetMapping(value = "/{${pkColumn.javaField}}" ) public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}" ) ${pkColumn.javaType} ${pkColumn.javaField}) { return AjaxResult.success(i${ClassName}Service.getById(${pkColumn.javaField})); public AjaxResult<${ClassName}Vo> getInfo(@PathVariable("${pkColumn.javaField}" ) ${pkColumn.javaType} ${pkColumn.javaField}) { return AjaxResult.success(i${ClassName}Service.queryById(${pkColumn.javaField})); } /** * æ°å¢${functionName} */ @ApiOperation("æ°å¢${functionName}") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')" ) @Log(title = "${functionName}" , businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ${ClassName} ${className}) { return toAjax(i${ClassName}Service.save(${className}) ? 1 : 0); public AjaxResult<Void> add(@RequestBody ${ClassName}AddBo bo) { return toAjax(i${ClassName}Service.insertByAddBo(bo) ? 1 : 0); } /** * ä¿®æ¹${functionName} */ @ApiOperation("ä¿®æ¹${functionName}") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')" ) @Log(title = "${functionName}" , businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody ${ClassName} ${className}) { return toAjax(i${ClassName}Service.updateById(${className}) ? 1 : 0); public AjaxResult<Void> edit(@RequestBody ${ClassName}EditBo bo) { return toAjax(i${ClassName}Service.updateByEditBo(bo) ? 1 : 0); } /** * å é¤${functionName} */ @ApiOperation("å é¤${functionName}") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')" ) @Log(title = "${functionName}" , businessType = BusinessType.DELETE) @DeleteMapping("/{${pkColumn.javaField}s}" ) public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) { return toAjax(i${ClassName}Service.removeByIds(Arrays.asList(${pkColumn.javaField}s)) ? 1 : 0); public AjaxResult<Void> remove(@PathVariable ${pkColumn.javaType} ${pkColumn.javaField}s) { return toAjax(i${ClassName}Service.deleteWithValidByIds(Arrays.asList(${pkColumn.javaField}s), true) ? 1 : 0); } } ruoyi-generator/src/main/resources/vm/java/domain.java.vm
@@ -1,14 +1,9 @@ package ${packageName}.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import com.ruoyi.common.annotation.Excel; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import java.io.Serializable; import java.util.Date; import java.util.Map; @@ -32,30 +27,19 @@ #foreach ($column in $columns) /** $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) #if($column.javaField=="createBy"||$column.javaField=="createTime") @TableField(fill = FieldFill.INSERT) #end #if($parentheseIndex != -1) @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()") #elseif($column.javaType == 'Date') @Excel(name = "${comment}" , width = 30, dateFormat = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") #else @Excel(name = "${comment}") #if($column.javaField=="updateBy"||$column.javaField=="updateTime") @TableField(fill = FieldFill.INSERT_UPDATE) #end #if($column.javaField=='delFlag') @TableLogic #end #if($column.isPk==1) @TableId(value = "$column.columnName") private $column.javaType $column.javaField; #else private $column.javaType $column.javaField; #end private $column.javaType $column.javaField; #end @TableField(exist = false) private Map<String, Object> params = new HashMap<>(); } ruoyi-generator/src/main/resources/vm/java/editBo.java.vm
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,36 @@ package ${packageName}.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; #foreach ($import in $importList) import ${import}; #end /** * ${functionName}ç¼è¾å¯¹è±¡ ${tableName} * * @author ${author} * @date ${datetime} */ @Data @ApiModel("${functionName}ç¼è¾å¯¹è±¡") public class ${ClassName}EditBo { private static final long serialVersionUID = 1L; #foreach ($column in $columns) #if($column.isEdit) /** $column.columnComment */ @ApiModelProperty("$column.columnComment") private $column.javaType $column.javaField; #end #end #if($table.sub) /** $table.subTable.functionNameä¿¡æ¯ */ @ApiModelProperty("$table.subTable.functionName") private List<${subClassName}> ${subclassName}List; #end } ruoyi-generator/src/main/resources/vm/java/queryBo.java.vm
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ package ${packageName}.bo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; #foreach ($import in $importList) import ${import}; #end /** * ${functionName}å页æ¥è¯¢å¯¹è±¡ ${tableName} * * @author ${author} * @date ${datetime} */ @Data @ApiModel("${functionName}å页æ¥è¯¢å¯¹è±¡") public class ${ClassName}QueryBo { private static final long serialVersionUID = 1L; /** åé¡µå¤§å° */ @ApiModelProperty("å页大å°") private Integer pageSize; /** å½åé¡µæ° */ @ApiModelProperty("å½å页æ°") private Integer pageNum; /** æåºå */ @ApiModelProperty("æåºå") private String orderByColumn; /** æåºçæ¹ådescæè asc */ @ApiModelProperty(value = "æåºçæ¹å", example = "asc,desc") private String isAsc; #foreach ($column in $columns) #if(!$table.isSuperColumn($column.javaField) && $column.query) /** $column.columnComment */ @ApiModelProperty("$column.columnComment") private $column.javaType $column.javaField; #end #end } ruoyi-generator/src/main/resources/vm/java/service.java.vm
@@ -1,7 +1,13 @@ package ${packageName}.service; import ${packageName}.domain.${ClassName}; import ${packageName}.vo.${ClassName}Vo; import ${packageName}.bo.${ClassName}QueryBo; import ${packageName}.bo.${ClassName}AddBo; import ${packageName}.bo.${ClassName}EditBo; import com.baomidou.mybatisplus.extension.service.IService; import java.util.Collection; import java.util.List; /** @@ -11,9 +17,36 @@ * @date ${datetime} */ public interface I${ClassName}Service extends IService<${ClassName}> { /** * æ¥è¯¢å个 * @return */ ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}); /** * æ¥è¯¢å表 */ List<${ClassName}> queryList(${ClassName} ${className}); /** * æ¥è¯¢å表 */ List<${ClassName}Vo> queryList(${ClassName}QueryBo bo); /** * æ ¹æ®æ°å¢ä¸å¡å¯¹è±¡æå ¥${functionName} * @param bo ${functionName}æ°å¢ä¸å¡å¯¹è±¡ * @return */ Boolean insertByAddBo(${ClassName}AddBo bo); /** * æ ¹æ®ç¼è¾ä¸å¡å¯¹è±¡ä¿®æ¹${functionName} * @param bo ${functionName}ç¼è¾ä¸å¡å¯¹è±¡ * @return */ Boolean updateByEditBo(${ClassName}EditBo bo); /** * æ ¡éªå¹¶å 餿°æ® * @param ids 主é®éå * @param isValid æ¯å¦æ ¡éª,true-å é¤åæ ¡éª,false-䏿 ¡éª * @return */ Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); } ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm
@@ -1,16 +1,23 @@ package ${packageName}.service.impl; import cn.hutool.core.bean.BeanUtil; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.apache.commons.lang3.StringUtils; import ${packageName}.mapper.${ClassName}Mapper; import ${packageName}.bo.${ClassName}AddBo; import ${packageName}.bo.${ClassName}QueryBo; import ${packageName}.bo.${ClassName}EditBo; import ${packageName}.domain.${ClassName}; import ${packageName}.mapper.${ClassName}Mapper; import ${packageName}.vo.${ClassName}Vo; import ${packageName}.service.I${ClassName}Service; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * ${functionName}Serviceä¸å¡å±å¤ç @@ -22,93 +29,80 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service { @Override public List<${ClassName}> queryList(${ClassName} ${className}) { public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}){ ${ClassName} db = this.baseMapper.selectById(${pkColumn.javaField}); return entity2Vo(Collections.singletonList(db)).get(0); } @Override public List<${ClassName}Vo> queryList(${ClassName}QueryBo bo) { LambdaQueryWrapper<${ClassName}> lqw = Wrappers.lambdaQuery(); #foreach($column in $columns) #if($column.query) #set($queryType=$column.queryType) #set($javaField=$column.javaField) #set($javaType=$column.javaType) #set($columnName=$column.columnName) #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) #if($column.query) #if($column.queryType == "EQ") #set($mpMethod=$column.queryType.toLowerCase()) #if($queryType != 'BETWEEN') #if($javaType == 'String') if (StringUtils.isNotBlank(${className}.get$AttrName())){ lqw.eq(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())') #else if (${className}.get$AttrName() != null){ lqw.eq(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #set($condition='bo.get'+$AttrName+'() != null') #end #elseif($queryType == "NE") #if($javaType == 'String') if (StringUtils.isNotBlank(${className}.get$AttrName())){ lqw.ne(${ClassName}::get$AttrName ,${className}.get$AttrName()); } lqw.$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName()); #else if (${className}.get$AttrName() != null){ lqw.ne(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #end #elseif($queryType == "GT") #if($javaType == 'String') if (StringUtils.isNotBlank(${className}.get$AttrName())){ lqw.gt(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #else if (${className}.get$AttrName() != null){ lqw.gt(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #end #elseif($queryType == "GTE") #if($javaType == 'String') if (StringUtils.isNotBlank(${className}.get$AttrName())){ lqw.ge(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #else if (${className}.get$AttrName() != null){ lqw.ge(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #end #elseif($queryType == "LT") #if($javaType == 'String') if (StringUtils.isNotBlank(${className}.get$AttrName())){ lqw.lt(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #else if (${className}.get$AttrName() != null){ lqw.lt(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #end #elseif($queryType == "LTE") #if($javaType == 'String') if (StringUtils.isNotBlank(${className}.get$AttrName())){ lqw.le(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #else if (${className}.get$AttrName() != null){ lqw.le(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #end #elseif($queryType == "LIKE") #if($javaType == 'String') if (StringUtils.isNotBlank(${className}.get$AttrName())){ lqw.like(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #else if (${className}.get$AttrName() != null){ lqw.like(${ClassName}::get$AttrName ,${className}.get$AttrName()); } #end #elseif($queryType == "BETWEEN") Map<String, Object> params = ${className}.getParams(); if (params.get("begin$AttrName") != null && params.get("end$AttrName") != null) { lqw.between(${ClassName}::get$AttrName ,params.get("begin$AttrName"),params.get("end$AttrName")); lqw.between(${ClassName}::get$AttrName ,params.get("begin$AttrName"), params.get("end$AttrName")); } #end #end #end return this.list(lqw); return entity2Vo(this.list(lqw)); } /** * å®ä½ç±»è½¬åæè§å¾å¯¹è±¡ * * @param collection å®ä½ç±»éå * @return */ private List<${ClassName}Vo> entity2Vo(Collection<${ClassName}> collection) { return collection.stream() .map(any -> BeanUtil.toBean(any, ${ClassName}Vo.class)) .collect(Collectors.toList()); } @Override public Boolean insertByAddBo(${ClassName}AddBo bo) { ${ClassName} add = BeanUtil.toBean(bo, ${ClassName}.class); validEntityBeforeSave(add); return this.save(add); } @Override public Boolean updateByEditBo(${ClassName}EditBo bo) { ${ClassName} update = BeanUtil.toBean(bo, ${ClassName}.class); validEntityBeforeSave(update); return this.updateById(update); } /** * ä¿ååçæ°æ®æ ¡éª * * @param entity å®ä½ç±»æ°æ® */ private void validEntityBeforeSave(${ClassName} entity){ //TODO åä¸äºæ°æ®æ ¡éª,å¦å¯ä¸çº¦æ } @Override public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { if(isValid){ //TODO åä¸äºä¸å¡ä¸çæ ¡éª,夿æ¯å¦éè¦æ ¡éª } return this.removeByIds(ids); } } ruoyi-generator/src/main/resources/vm/java/vo.java.vm
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,51 @@ package ${packageName}.vo; import com.ruoyi.common.annotation.Excel; import com.fasterxml.jackson.annotation.JsonFormat; #foreach ($import in $importList) import ${import}; #end import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * ${functionName}è§å¾å¯¹è±¡ mall_package * * @author ${author} * @date ${datetime} */ @Data @ApiModel("${functionName}è§å¾å¯¹è±¡") public class ${ClassName}Vo { private static final long serialVersionUID = 1L; /** $pkColumn.columnComment */ @ApiModelProperty("$pkColumn.columnComment") private ${pkColumn.javaType} ${pkColumn.javaField}; #foreach ($column in $columns) #if($column.isList) /** $column.columnComment */ #set($parentheseIndex=$column.columnComment.indexOf("ï¼")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) #else #set($comment=$column.columnComment) #end #if($parentheseIndex != -1) @Excel(name = "${comment}" , readConverterExp = "$column.readConverterExp()") #elseif($column.javaType == 'Date') @Excel(name = "${comment}" , width = 30, dateFormat = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") #else @Excel(name = "${comment}") #end @ApiModelProperty("$column.columnComment") private $column.javaType $column.javaField; #end #end }