代码生成没有设置主键出现的bug修复、ftl模板更新

This commit is contained in:
2022-12-07 14:10:24 +08:00
parent 83ca5012e7
commit 42a7674785
8 changed files with 151 additions and 137 deletions

View File

@@ -277,6 +277,12 @@ public class GenUtil {
genMap.put("hasQuery", false); genMap.put("hasQuery", false);
// 自增主键 // 自增主键
genMap.put("auto", false); genMap.put("auto", false);
// 存储主键类型(未标明主键)
genMap.put("pkColumnType", "Long");
// 存储小写开头的字段名(未标明主键)
genMap.put("pkChangeColName", "id");
// 存储大写开头的字段名(未标明主键)
genMap.put("pkCapitalColName", "Id");
// 存在字典 // 存在字典
genMap.put("hasDict", false); genMap.put("hasDict", false);
// 存在日期注解 // 存在日期注解

View File

@@ -1,7 +1,8 @@
package ${package}.rest; package ${package}.rest;
import ${package}.service.${className}Service;
import ${package}.service.dto.${className}Dto;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.nl.modules.logging.annotation.Log; import org.nl.modules.logging.annotation.Log;
@@ -57,7 +58,7 @@ public class ${className}Controller {
@ApiOperation("删除${apiAlias}") @ApiOperation("删除${apiAlias}")
//@SaCheckPermission("@el.check('${changeClassName}:del')") //@SaCheckPermission("@el.check('${changeClassName}:del')")
@DeleteMapping @DeleteMapping
public ResponseEntity<Object> delete(@RequestBody ${pkColumnType}[] ids) { public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
${changeClassName}Service.deleteAll(ids); ${changeClassName}Service.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }

View File

@@ -2,15 +2,18 @@ package ${package}.service.dto;
import lombok.Data; import lombok.Data;
<#if hasTimestamp> <#if hasTimestamp>
import java.sql.Timestamp; import java.sql.Timestamp;
</#if>
<#if hasDate>
import java.util.Date;
</#if> </#if>
<#if hasBigDecimal> <#if hasBigDecimal>
import java.math.BigDecimal; import java.math.BigDecimal;
</#if> </#if>
import java.io.Serializable; import java.io.Serializable;
<#if !auto && pkColumnType = 'Long'> <#if !auto && pkColumnType = 'Long'>
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
</#if> </#if>
/** /**
@@ -21,18 +24,18 @@ import java.io.Serializable;
@Data @Data
public class ${className}Dto implements Serializable { public class ${className}Dto implements Serializable {
<#if columns??> <#if columns??>
<#list columns as column> <#list columns as column>
<#if column.remark != ''> <#if column.remark != ''>
/** ${column.remark} */ /** ${column.remark} */
</#if> </#if>
<#if column.columnKey = 'PRI'> <#if column.columnKey = 'PRI'>
<#if !auto && pkColumnType = 'Long'> <#if !auto && pkColumnType = 'Long'>
/** 防止精度丢失 */ /** 防止精度丢失 */
@JsonSerialize(using= ToStringSerializer.class) @JsonSerialize(using= ToStringSerializer.class)
</#if> </#if>
</#if> </#if>
private ${column.columnType} ${column.changeColumnName}; private ${column.columnType} ${column.changeColumnName};
</#list> </#list>
</#if> </#if>
} }

View File

@@ -13,8 +13,8 @@ import javax.persistence.*;
import javax.persistence.Table; import javax.persistence.Table;
import org.hibernate.annotations.*; import org.hibernate.annotations.*;
</#if> </#if>
<#if hasTimestamp> <#if hasDate>
import java.sql.Timestamp; import java.util.Date;
</#if> </#if>
<#if hasBigDecimal> <#if hasBigDecimal>
import java.math.BigDecimal; import java.math.BigDecimal;
@@ -48,10 +48,10 @@ public class ${className} implements Serializable {
</#if> </#if>
</#if> </#if>
<#if (column.dateAnnotation)?? && column.dateAnnotation != ''> <#if (column.dateAnnotation)?? && column.dateAnnotation != ''>
<#if column.dateAnnotation = 'CreationTimestamp'> <#if column.dateAnnotation = 'CreationDate'>
@CreationTimestamp
<#else> <#else>
@UpdateTimestamp @UpdateDate
</#if> </#if>
</#if> </#if>
<#if column.remark != ''> <#if column.remark != ''>

View File

@@ -2,8 +2,8 @@
package ${package}.service.dto; package ${package}.service.dto;
import lombok.Data; import lombok.Data;
<#if queryHasTimestamp> <#if queryHasDate>
import java.sql.Timestamp; import java.util.Date;
</#if> </#if>
<#if queryHasBigDecimal> <#if queryHasBigDecimal>
import java.math.BigDecimal; import java.math.BigDecimal;

View File

@@ -1,6 +1,6 @@
package ${package}.service; package ${package}.service;
import ${package}.service.dto.${className}Dto;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import java.util.Map; import java.util.Map;
import java.util.List; import java.util.List;
@@ -14,51 +14,51 @@ import javax.servlet.http.HttpServletResponse;
**/ **/
public interface ${className}Service { public interface ${className}Service {
/** /**
* 查询数据分页 * 查询数据分页
* @param whereJson 条件 * @param whereJson 条件
* @param page 分页参数 * @param page 分页参数
* @return Map<String,Object> * @return Map<String,Object>
*/ */
Map<String,Object> queryAll(Map whereJson, Pageable page); Map<String,Object> queryAll(Map whereJson, Pageable page);
/** /**
* 查询所有数据不分页 * 查询所有数据不分页
* @param whereJson 条件参数 * @param whereJson 条件参数
* @return List<${className}Dto> * @return List<${className}Dto>
*/ */
List<${className}Dto> queryAll(Map whereJson); List<${className}Dto> queryAll(Map whereJson);
/** /**
* 根据ID查询 * 根据ID查询
* @param ${pkChangeColName} ID * @param ${pkChangeColName} ID
* @return ${className} * @return ${className}
*/ */
${className}Dto findById(${pkColumnType} ${pkChangeColName}); ${className}Dto findById(${pkColumnType} ${pkChangeColName});
/** /**
* 根据编码查询 * 根据编码查询
* @param code code * @param code code
* @return ${className} * @return ${className}
*/ */
${className}Dto findByCode(String code); ${className}Dto findByCode(String code);
/** /**
* 创建 * 创建
* @param dto / * @param dto /
*/ */
void create(${className}Dto dto); void create(${className}Dto dto);
/** /**
* 编辑 * 编辑
* @param dto / * @param dto /
*/ */
void update(${className}Dto dto); void update(${className}Dto dto);
/** /**
* 多选删除 * 多选删除
* @param ids / * @param ids /
*/ */
void deleteAll(${pkColumnType}[] ids); void deleteAll(${pkColumnType}[] ids);
} }

View File

@@ -1,9 +1,12 @@
package ${package}.service.impl; package ${package}.service.impl;
import ${package}.service.${className}Service;
import ${package}.service.dto.${className}Dto;
import com.alibaba.fastjson.JSON;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.nl.modules.common.exception.BadRequestException;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
@@ -14,7 +17,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.nl.sso.tools.SecurityUtils; import org.nl.modules.common.utils.SecurityUtils;
import org.nl.modules.wql.core.bean.ResultBean; import org.nl.modules.wql.core.bean.ResultBean;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.WqlUtil; import org.nl.modules.wql.util.WqlUtil;
@@ -31,98 +34,98 @@ import cn.hutool.core.util.ObjectUtil;
@Slf4j @Slf4j
public class ${className}ServiceImpl implements ${className}Service { public class ${className}ServiceImpl implements ${className}Service {
@Override @Override
public Map<String,Object> queryAll(Map whereJson, Pageable page){ public Map<String,Object> queryAll(Map whereJson, Pageable page){
WQLObject wo = WQLObject.getWQLObject("${tableName}"); WQLObject wo = WQLObject.getWQLObject("${tableName}");
ResultBean rb = wo.pagequery(WqlUtil.getHttpContext(page), "1=1", "update_time desc"); ResultBean rb = wo.pagequery(WqlUtil.getHttpContext(page), "1=1", "update_time desc");
final JSONObject json = rb.pageResult(); final JSONObject json = rb.pageResult();
return json; return json;
} }
@Override @Override
public List<${className}Dto> queryAll(Map whereJson){ public List<${className}Dto> queryAll(Map whereJson){
WQLObject wo = WQLObject.getWQLObject("${tableName}"); WQLObject wo = WQLObject.getWQLObject("${tableName}");
JSONArray arr = wo.query().getResultJSONArray(0); JSONArray arr = wo.query().getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(${className}Dto.class); if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(${className}Dto.class);
return null; return null;
} }
@Override @Override
public ${className}Dto findById(${pkColumnType} ${pkChangeColName}) { public ${className}Dto findById(${pkColumnType} ${pkChangeColName}) {
WQLObject wo = WQLObject.getWQLObject("${tableName}"); WQLObject wo = WQLObject.getWQLObject("${tableName}");
JSONObject json = wo.query("${pkChangeColName} = '" + ${pkChangeColName} + "'").uniqueResult(0); JSONObject json = wo.query("${pkChangeColName} = '" + ${pkChangeColName} + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(json)){ if (ObjectUtil.isNotEmpty(json)){
return json.toJavaObject( ${className}Dto.class); return json.toJavaObject( ${className}Dto.class);
} }
return null; return null;
} }
@Override @Override
public ${className}Dto findByCode(String code) { public ${className}Dto findByCode(String code) {
WQLObject wo = WQLObject.getWQLObject("${tableName}"); WQLObject wo = WQLObject.getWQLObject("${tableName}");
JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(json)){ if (ObjectUtil.isNotEmpty(json)){
return json.toJavaObject( ${className}Dto.class); return json.toJavaObject( ${className}Dto.class);
} }
return null; return null;
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void create(${className}Dto dto) { public void create(${className}Dto dto) {
Long currentUserId = SecurityUtils.getCurrentUserId(); Long currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName(); String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now(); String now = DateUtil.now();
dto.set${pkChangeColName ? cap_first }(IdUtil.getSnowflake(1, 1).nextId()); dto.set${pkChangeColName ? cap_first }(IdUtil.getSnowflake(1, 1).nextId());
dto.setCreate_id(currentUserId); dto.setCreate_id(currentUserId);
dto.setCreate_name(nickName); dto.setCreate_name(nickName);
dto.setUpdate_optid(currentUserId); dto.setUpdate_optid(currentUserId);
dto.setUpdate_optname(nickName); dto.setUpdate_optname(nickName);
dto.setUpdate_time(now); dto.setUpdate_time(now);
dto.setCreate_time(now); dto.setCreate_time(now);
WQLObject wo = WQLObject.getWQLObject("${tableName}"); WQLObject wo = WQLObject.getWQLObject("${tableName}");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
wo.insert(json); wo.insert(json);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void update(${className}Dto dto) { public void update(${className}Dto dto) {
${className}Dto entity = this.findById(dto.get${pkChangeColName ? cap_first }()); ${className}Dto entity = this.findById(dto.get${pkChangeColName ? cap_first }());
if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!");
Long currentUserId = SecurityUtils.getCurrentUserId(); Long currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName(); String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now(); String now = DateUtil.now();
dto.setUpdate_time(now); dto.setUpdate_time(now);
dto.setUpdate_optid(currentUserId); dto.setUpdate_optid(currentUserId);
dto.setUpdate_optname(nickName); dto.setUpdate_optname(nickName);
WQLObject wo = WQLObject.getWQLObject("${tableName}"); WQLObject wo = WQLObject.getWQLObject("${tableName}");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
wo.update(json); wo.update(json);
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void deleteAll(${pkColumnType}[] ids) { public void deleteAll(${pkColumnType}[] ids) {
Long currentUserId = SecurityUtils.getCurrentUserId(); Long currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName(); String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now(); String now = DateUtil.now();
WQLObject wo = WQLObject.getWQLObject("${tableName}"); WQLObject wo = WQLObject.getWQLObject("${tableName}");
for (${pkColumnType} ${pkChangeColName}: ids) { for (${pkColumnType} ${pkChangeColName}: ids) {
JSONObject param = new JSONObject(); JSONObject param = new JSONObject();
param.put("${pkChangeColName}", String.valueOf(${pkChangeColName})); param.put("${pkChangeColName}", String.valueOf(${pkChangeColName}));
param.put("is_delete", "1"); param.put("is_delete", "1");
param.put("update_optid", currentUserId); param.put("update_optid", currentUserId);
param.put("update_optname", nickName); param.put("update_optname", nickName);
param.put("update_time", now); param.put("update_time", now);
wo.update(param); wo.update(param);
} }
} }
} }

View File

@@ -85,7 +85,7 @@
{{ dict.label.${column.dictName}[scope.row.${column.changeColumnName}] }} {{ dict.label.${column.dictName}[scope.row.${column.changeColumnName}] }}
</template> </template>
</el-table-column> </el-table-column>
<#elseif column.columnType != 'Timestamp'> <#elseif column.columnType != 'Date'>
<el-table-column prop="${column.changeColumnName}" label="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>" :min-width="flexWidth('${column.changeColumnName}',crud.data,'<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>')"/> <el-table-column prop="${column.changeColumnName}" label="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>" :min-width="flexWidth('${column.changeColumnName}',crud.data,'<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>')"/>
<#else> <#else>
<el-table-column prop="${column.changeColumnName}" label="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>" :min-width="flexWidth('${column.changeColumnName}',crud.data,'<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>')"> <el-table-column prop="${column.changeColumnName}" label="<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>" :min-width="flexWidth('${column.changeColumnName}',crud.data,'<#if column.remark != ''>${column.remark}<#else>${column.changeColumnName}</#if>')">
@@ -113,13 +113,14 @@
</template> </template>
<script> <script>
import CRUD, {crud, form, header, presenter} from '@crud/crud' import crud${className} from './${changeClassName}'
import rrOperation from '@crud/RR.operation' import CRUD, {crud, form, header, presenter} from '@crud/crud'
import crudOperation from '@crud/CRUD.operation' import rrOperation from '@crud/RR.operation'
import udOperation from '@crud/UD.operation' import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination' import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
const defaultForm = { <#if columns??><#list columns as column>${column.changeColumnName}: null<#if column_has_next>, </#if></#list></#if> } const defaultForm = { <#if columns??><#list columns as column>${column.changeColumnName}: null<#if column_has_next>, </#if></#list></#if> }
export default { export default {
name: '${className}', name: '${className}',
components: { pagination, crudOperation, rrOperation, udOperation }, components: { pagination, crudOperation, rrOperation, udOperation },