diff --git a/pom.xml b/pom.xml index 1a39c51..fecb30f 100644 --- a/pom.xml +++ b/pom.xml @@ -38,12 +38,12 @@ gson 2.8.4 - + com.jfinal enjoy diff --git a/root/index.html b/root/index.html index 52c3b29..423db67 100644 --- a/root/index.html +++ b/root/index.html @@ -69,14 +69,14 @@ 后端模板选择 - mybaits - hibernate + mybaits + hibernate 前端模板选择 - angularjs - vue + angularjs + vue @@ -167,7 +167,7 @@ red.setData("cfg_" + fileName, n); }, deep: true - } + }, }, methods: { //历史上传的文件数据(文件存贮在用户本地) @@ -297,7 +297,7 @@ pageModel: "abx", author: "EverCA", ca:["service"], - sheetNames: ["message_finger"] + sheetNames: ["message_finger"], }); } diff --git a/src/com/eversec/kit/creator/Runner.java b/src/com/eversec/kit/creator/Runner.java index 41228b6..f9a060f 100644 --- a/src/com/eversec/kit/creator/Runner.java +++ b/src/com/eversec/kit/creator/Runner.java @@ -2,8 +2,14 @@ package com.eversec.kit.creator; import com.eversec.common.FileKit; import com.eversec.common.Kv; -import com.eversec.kit.creator.impl.*; +import com.eversec.kit.creator.impl.ControllerKit; +import com.eversec.kit.creator.impl.DaoMapper; +import com.eversec.kit.creator.impl.JavaBeanKit; +import com.eversec.kit.creator.impl.ServiceImplKit; +import com.eversec.kit.creator.impl.ServiceKit; +import com.eversec.kit.creator.impl.SqlKit; import com.eversec.kit.creator.impl.page.*; +import com.eversec.kit.creator.impl.XmlSqlKit; import com.eversec.service.CfgBean; import java.io.File; @@ -22,24 +28,32 @@ public class Runner { List ca = cfgBean.getCa(); ca.forEach(x -> { if ("service".equalsIgnoreCase(x)) { - creators.add(new JavaBeanKit());// JavaBean - creators.add(new XmlSqlKit());// 生成mysql 版本的xml配置文件, 如果要生成Es使用对应的实例对象即可 - creators.add(new ControllerKit());// Controller - creators.add(new ServiceKit());//service - creators.add(new ServiceImplKit());//ServiceImpl - creators.add(new DaoMapper());// Mapper.java文件 针对使用Mybites创建对应的xxxMapper.java + if ("mb".equalsIgnoreCase(cfgBean.getServiceTpl())){ + creators.add(new JavaBeanKit());// JavaBean + creators.add(new XmlSqlKit());// 生成mysql 版本的xml配置文件, 如果要生成Es使用对应的实例对象即可 + creators.add(new ControllerKit());// Controller + creators.add(new ServiceKit());//service + creators.add(new ServiceImplKit());//ServiceImpl + creators.add(new DaoMapper());// Mapper.java文件 针对使用Mybites创建对应的xxxMapper.java + }else if ("hb".equalsIgnoreCase(cfgBean.getServiceTpl())){ + + } } if ("ddl".equalsIgnoreCase(x)) { creators.add(new SqlKit());// Mysql 建表语句,【提示Es或者其他建表语句可自行创建对应的实现】 } if ("front".equalsIgnoreCase(x)) { - creators.add(new CtrlKit()); - creators.add(new ListKit()); - creators.add(new EditKit()); - creators.add(new EditCtrlKit()); - creators.add(new ConditionKit()); - creators.add(new DetailKit()); - creators.add(new DetailCtrlKit()); + if ("a".equalsIgnoreCase(cfgBean.getFontTpl())){ + creators.add(new CtrlKit()); + creators.add(new ListKit()); + creators.add(new EditKit()); + creators.add(new EditCtrlKit()); + creators.add(new ConditionKit()); + creators.add(new DetailKit()); + creators.add(new DetailCtrlKit()); + }else if ("v".equalsIgnoreCase(cfgBean.getFontTpl())){ + creators.add(new VueKit()); + } } }); return creators; @@ -50,6 +64,7 @@ public class Runner { StringBuilder sqlBuf = new StringBuilder(); List ctrList = new ArrayList<>(); + List vueRouterList = new ArrayList<>(); infoBuf.append("------------ start ... ------------\n"); infoBuf.append("create service code path:" + ICreator.dirPath + "\n"); @@ -82,6 +97,14 @@ public class Runner { else if (x instanceof SqlKit){ sqlBuf.append(x.createStr(clazz, list, para)); } + else if (x instanceof VueKit){ + Kv kt = new Kv(); + kt.put("name",ICreator.toLowerCaseFirst(clazz)); + kt.put("title",remark); + vueRouterList.add(kt); + + x.createFile(x.createStr(clazz, list, para), clazz); + } else { x.createFile(x.createStr(clazz, list, para), clazz); } @@ -109,6 +132,12 @@ public class Runner { String strList = ICreator.engine.getTemplate(ICreator.tplPath + "front/ext/listExtTpl.html").renderToString(Kv.of("data", ctrList)); FileKit.strToFile(strList, new File("tmp/list.html")); } + + if (vueRouterList.size() > 0){ + String vList = ICreator.engine.getTemplate(ICreator.tplPath + "front/VueRouterTpl.js").renderToString(Kv.of("cfg", vueRouterList)); + FileKit.strToFile(vList, new File(ICreator.pageDirPath + "/kit/routerConfig.js")); + } + infoBuf.append("------------ complete! -----------\n"); System.out.println(infoBuf.toString()); diff --git a/src/com/eversec/kit/creator/impl/page/VueKit.java b/src/com/eversec/kit/creator/impl/page/VueKit.java new file mode 100644 index 0000000..7480919 --- /dev/null +++ b/src/com/eversec/kit/creator/impl/page/VueKit.java @@ -0,0 +1,126 @@ +package com.eversec.kit.creator.impl.page; + +import com.eversec.common.Kv; +import com.eversec.kit.creator.ICreator; +import com.eversec.kit.creator.impl.page.PageKit; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static java.util.Arrays.asList; + +public class VueKit extends PageKit { + + @Override + public File getFile(String clazz) { + return new File(filePath(clazz) + "/kit/" + ICreator.toLowerCaseFirst(clazz) + ".vue"); + } + + @Override + public String createStr(String clazz, List fieldList, Map para) { + List sc = new ArrayList<>(); + List filterList = new ArrayList<>(); + List detailsList = new ArrayList<>(); + List editsList = new ArrayList<>(); + fieldList.forEach(x -> { + x.put("field", (x.get("field") + "").trim()); + x.put("isMust", isMust(x)); + x.put("fieldType", getFiledType(x.get("cate")+"")); + x.put("fieldV",createFiled(x)); + if ("1".equals(x.get("column"))){ + sc.add((x.get("field") + "").trim()); + } + if ("1".equals(x.get("filter"))){ + Map map = new HashMap(); + map.put("name",(x.get("field") + "").trim()); + map.put("label",x.get("remark1")); + map.put("col","EQUAL"); + map.put("remark","等于"); + filterList.add(map); + } + if ("like".equals(x.get("filter"))){ + Map map = new HashMap(); + map.put("name",(x.get("field") + "").trim()); + map.put("label",x.get("remark1")); + map.put("col","LIKE"); + map.put("remark","LIKE"); + filterList.add(map); + } + if ("1".equals(x.get("xqzs"))){ + detailsList.add((x.get("field") + "").trim()); + } + if ("1".equals(x.get("edit"))){ + Map map = new HashMap(); + if ("id".equals((x.get("field") + "").trim())){ + map.put("col",(x.get("field") + "").trim()); + map.put("upAttr","hidden"); + map.put("addAttr","none"); + + }else { + map.put("col",(x.get("field") + "").trim()); + if ("1".equals(x.get("ck"))){ + map.put("ck",(x.get("field") + "").trim()); + } + } + editsList.add(map); + } + + }); + Kv kv = createTplData(clazz); + kv.set("remark", para.get("remark")); + kv.set("fieldList", fieldList); + kv.set("showCol",sc); + kv.set("fs",filterList); + kv.set("detailsList",detailsList); + kv.set("editsList",editsList); + kv.set("conditionLabel", getConditionLabel(fieldList, para)); + + return engine.getTemplate(tplPath + "front/VueTpl.vue").renderToString(kv); + } + + protected String createFiled(Map x){ + String res = ""; + if ("2".equals(String.valueOf(x.get("edit")))) { + res = x.get("field") + "||" + x.get("selects"); + } else if ("SELECT".equalsIgnoreCase(String.valueOf(x.get("tag")))) { + res = x.get("field") + "=" + x.get("field"); + } else if ("SELECT_EXT".equalsIgnoreCase(String.valueOf(x.get("tag")))) { + res = x.get("field") + "|" + x.get("selects"); + } else if ("INPUT_DT".equalsIgnoreCase(String.valueOf(x.get("tag")))) { + res = x.get("field") + "=dt"; + } else if ("FILE_EXT".equalsIgnoreCase(String.valueOf(x.get("tag")))) { + res = x.get("selects") + ""; + } else { + res = x.get("field") + ""; + } + return res; + } + + @Override + public String filePath(String clazz) { + return dirPath; + } + + //获取设置了关键字查询的 字段“描述” + private String getConditionLabel(List fieldList, Map para) { + StringBuilder buf = new StringBuilder(); + if (para.get("condition") != null){ + List conditions = asList((String[]) para.get("condition")); + fieldList.forEach(m->{ + for (String str : conditions) { + //字段有大小写转换,这里需要使用 equalsIgnoreCase 进行比较 + if ((m.get("field")+"").trim().equalsIgnoreCase(str)) { + buf.append(m.get("remark1")+"/"); + } + } + }); + } + if (buf.length() > 0){ + buf.deleteCharAt(buf.length()-1); + } + return buf.toString(); + } +} diff --git a/src/com/eversec/service/CfgBean.java b/src/com/eversec/service/CfgBean.java index 50fc5b0..83d4f88 100644 --- a/src/com/eversec/service/CfgBean.java +++ b/src/com/eversec/service/CfgBean.java @@ -19,6 +19,8 @@ public class CfgBean { private String pkg; private String pageModel; private String author; + private String fontTpl; + private String serviceTpl; private List ca; private List sheetNames; @@ -86,6 +88,22 @@ public class CfgBean { this.author = author; } + public String getFontTpl() { + return fontTpl; + } + + public void setFontTpl(String fontTpl) { + this.fontTpl = fontTpl; + } + + public String getServiceTpl() { + return serviceTpl; + } + + public void setServiceTpl(String serviceTpl) { + this.serviceTpl = serviceTpl; + } + public List getCa() { return ca; } diff --git a/tpl/ActionTpl.java b/tpl/ActionTpl.java index 6baab35..694f5d5 100644 --- a/tpl/ActionTpl.java +++ b/tpl/ActionTpl.java @@ -3,9 +3,9 @@ package #(pkg).controller; import com.eversec.common.AbstractBaseController; import com.eversec.common.JBean; import com.eversec.common.Domain; +import com.eversec.common.PageBean; import #(pkg).domain.#(bean); import #(pkg).service.#(bean)Service; -import com.eversec.framework.core.data.QueryResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; @@ -99,7 +99,7 @@ public class #(bean)Controller extends AbstractBaseController { #end #end - QueryResult pageBean = #(beanFL)Service.findPage(m); + PageBean pageBean = #(beanFL)Service.findPage(m); return JBean.by(200, "成功", pageBean).toJson(); } diff --git a/tpl/BeanTpl.java b/tpl/BeanTpl.java index f62c257..915a008 100644 --- a/tpl/BeanTpl.java +++ b/tpl/BeanTpl.java @@ -20,7 +20,7 @@ public class #(bean) extends Domain { ,field=field.substring(0, 1).toLowerCase() + field.substring(1) ) #if(x.fieldType == "Date") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") #end private #(x.fieldType) #(field); //#(x.remark) #end diff --git a/tpl/front/VueRouterTpl.js b/tpl/front/VueRouterTpl.js new file mode 100644 index 0000000..b7443e9 --- /dev/null +++ b/tpl/front/VueRouterTpl.js @@ -0,0 +1,14 @@ +/** + * 工具模板路由配置信息 + */ +export default [ + #for(x : cfg) + #set(name=x.name, + title=x.title) + { + name: '#(name)', + title: '#(title)' + }#if(!(for.last)), + #end + #end +] \ No newline at end of file diff --git a/tpl/front/VueTpl.vue b/tpl/front/VueTpl.vue new file mode 100644 index 0000000..5b9fe81 --- /dev/null +++ b/tpl/front/VueTpl.vue @@ -0,0 +1,108 @@ + + + + + + \ No newline at end of file