前 后 码片
——数字字典里新增一个按钮 生成他们对应得枚举
后端
.xml
创建一个enum.ftl
/**
* @Description: ${dict.dictName}
* @Author: ksf
* @Date: ${.now?string["yyyy-MM-dd"]}
* @Version: V1.0
*/
public enum ${dict.dictCode}Enum {
<#list dictItems as item>
${item.itemText}( "${item.itemValue}","${item.itemText}")<#if item_has_next>,</#if>
</#list>;
/**
* 状态码
*/
private String code;
/**
* 状态名称
*/
private String name;
${dict.dictCode}Enum(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Controller层
PrCommonController
@Autowired
private ISysDictService sysDictService;
@Autowired
private ISysDictItemService sysDictItemService;
//Freemaker的核心配置类,用于动态生成模板对象
//在SpringBoot IOC容器初始化的时候,自动Configuration就被实例化
@Resource
private Configuration freemarkerConfig;
@AutoLog(value = "字典id获得字典项文本和字典项值")
@ApiOperation(value="字典id获得字典项文本和字典项值", notes="字典id获得字典项文本和字典项值")
@GetMapping(value = "/generateEnum")
/*@RequiresPermissions("enumerate:getList")*/
public Result<?> generateEnum(String dictId) throws Exception {
SysDict sysDict = sysDictService.getById(dictId);
List<SysDictItem> sysDictItems = sysDictItemService.selectItemsByMainId(dictId);
Template template = freemarkerConfig.getTemplate("enum.ftl");
Map param = new HashMap();
File targetFile = new File(FileUtils.getUserDirectoryPath()+"/DESKTOP/"+ oConvertUtils.camelNameCapFirst( sysDict.getDictCode())+"Enum.java");
sysDict.setDictCode(oConvertUtils.camelNameCapFirst( sysDict.getDictCode()));
param.put("dictItems", sysDictItems);
param.put("dict", sysDict);
FileWriter out = new FileWriter(targetFile);
template.process(param , out);
out.close();
// return targetFile.getPath();
Result result = new Result();
result.setMessage("生成成功:"+FileUtils.getUserDirectoryPath()+"/DESKTOP/"+ oConvertUtils.camelNameCapFirst( sysDict.getDictCode())+"Enum.java");
return result;
}
前端
api
//enum 生成
const generateEnum=(params)=>getAction('/pr/sys/generateEnum',params)
再在export里加上generateEnum
页面
DictList.vue
添加按钮
</a>
<a @click="exportEnum(record)">
<a-icon type="edit"/>
生成Enum
import {generateEnum} from '@/api/api'
methods
exportEnum(record){
generateEnum({dictId:record.id}).then((res)=>{
this.$message.info(res.message);
})
},
实现
点击按钮会直接生成在电脑里
实现生成得代码
/**
* @Description: 有效无效状态
* @Author: ksf
* @Date: 2019-12-02
* @Version: V1.0
*/
public enum ValidStatusEnum {
有效( "1","有效"),
无效( "0","无效")
;
/**
* 状态码
*/
private String code;
/**
* 状态名称
*/
private String name;
ValidStatusEnum(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}