From 211840b64fa1132d76d6dff6c779e9ba2c0c450f Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 07 四月 2022 19:13:54 +0800 Subject: [PATCH] 优化自动化代码 --- src/main/java/org/yeshi/utils/generater/vo/admin/page/FormAddInfoVO.java | 10 src/main/java/org/yeshi/utils/generater/entity/ColumnData.java | 10 src/main/java/org/yeshi/utils/generater/GeneraterManagerV2.java | 42 ++ src/main/java/org/yeshi/utils/generater/entity/admin/AdminGeneraterInfo.java | 12 src/main/resources/generater/admin/list.ftl | 36 + src/main/java/org/yeshi/utils/generater/vo/xmlconfig/XmlConfigParseUtil.java | 14 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ExceptionData.java | 12 src/main/resources/schemas/generator.dtd | 8 src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java | 29 + src/main/java/org/yeshi/utils/generater/annotation/admin/Show.java | 2 src/main/java/org/yeshi/utils/generater/vo/admin/page/FormUpdateInfoVO.java | 10 src/main/java/org/yeshi/utils/generater/GeneraterUtil.java | 7 src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ServiceData.java | 10 src/main/resources/generater/admin/adminVO.template | 76 +++++ src/main/resources/generater/admin/add.ftl | 30 + src/main/resources/generater/admin/update.ftl | 26 + src/main/resources/generater/dao/mybatisDBXML.ftl | 2 src/main/java/org/yeshi/utils/generater/vo/admin/page/ListInfoVO.java | 15 src/main/java/org/yeshi/utils/generater/vo/admin/controller/AdminVOVO.java | 119 ++++++++ src/main/java/org/yeshi/utils/generater/entity/admin/FormVerifyType.java | 2 src/main/java/org/yeshi/utils/generater/mybatis/ColumnUtil.java | 364 ++++++++++++++----------- 21 files changed, 597 insertions(+), 239 deletions(-) diff --git a/src/main/java/org/yeshi/utils/generater/GeneraterManagerV2.java b/src/main/java/org/yeshi/utils/generater/GeneraterManagerV2.java index 3f679a8..99af5a4 100644 --- a/src/main/java/org/yeshi/utils/generater/GeneraterManagerV2.java +++ b/src/main/java/org/yeshi/utils/generater/GeneraterManagerV2.java @@ -9,6 +9,7 @@ import org.yeshi.utils.generater.util.NameUtil; import org.yeshi.utils.generater.vo.ExceptionVO; import org.yeshi.utils.generater.vo.admin.controller.AdminControllerInfoVO; +import org.yeshi.utils.generater.vo.admin.controller.AdminVOVO; import org.yeshi.utils.generater.vo.dao.MongoDBDaoVO; import org.yeshi.utils.generater.vo.dao.MyBatisDBDaoVO; import org.yeshi.utils.generater.vo.service.QueryVO; @@ -82,7 +83,7 @@ FileUtil.saveAsFileByte(data.getBytes("UTF-8"), path); } - public void createException(Class base) throws Exception { + public void createException(ClassInfo base) throws Exception { if (config.getService().getException() == null) { throw new Exception("灏氭湭閰嶇疆寮傚父淇℃伅"); } @@ -90,7 +91,7 @@ String exceptionName = NameUtil.getDefaultExceptionName(config.getEntity()); String path = getDirPath(config.getService().getException().getPkg()); try { - ExceptionVO vo = new ExceptionVO.Builder().setEntity(config.getEntity()).setPackageName(config.getService().getException().getPkg()).setBase(new ClassInfo(base.getSimpleName(), base.getName())).build(); + ExceptionVO vo = new ExceptionVO.Builder().setEntity(config.getEntity()).setPackageName(config.getService().getException().getPkg()).setBase(base).build(); String result = GeneraterUtil.createException(vo); //淇濆瓨 saveFile(result, new File(path, exceptionName + ".java").getAbsolutePath()); @@ -98,6 +99,25 @@ e.printStackTrace(); } } + + + public void createAdminVO() throws Exception { + if (StringUtil.isNullOrEmpty(config.getService().getAdminVOPackage())) { + throw new Exception("灏氭湭閰嶇疆AdminVO"); + } + + String name = NameUtil.getDefaultExceptionName(config.getEntity()); + String path = getDirPath(config.getService().getAdminVOPackage()); + try { + AdminVOVO vo = new AdminVOVO.Builder().setEntity(config.getEntity()).setPackageName(config.getService().getAdminVOPackage()).build(); + String result = GeneraterUtil.createAdminVO(vo); + //淇濆瓨 + saveFile(result, new File(path, name + ".java").getAbsolutePath()); + } catch (Exception e) { + e.printStackTrace(); + } + } + public void createDao() throws Exception { @@ -220,7 +240,15 @@ } if (config.getService().getException() != null) { - createException(Exception.class); + if (config.getService().getException().getBase() != null) { + createException(config.getService().getException().getBase()); + } else { + createException(ClassInfo.create(Exception.class)); + } + } + + if (config.getService().getAdminVOPackage() != null) { + createAdminVO(); } QueryVO queryVO = createQuery(config.getService().getQueryPackage()); @@ -388,8 +416,12 @@ } - public static void main(String[] args) { - System.out.print(getHtmlNameFromEntityName("TTestEEntity")); + public static void main(String[] args) throws Exception { +// System.out.print(getHtmlNameFromEntityName("TTestEEntity")); +// AdminVOVO vo = new AdminVOVO.Builder().setEntity(TestEntity3.class).setPackageName("test.vo.admin").build(); +// String result = GeneraterUtil.createAdminVO(vo); +// System.out.println(result); + } diff --git a/src/main/java/org/yeshi/utils/generater/GeneraterUtil.java b/src/main/java/org/yeshi/utils/generater/GeneraterUtil.java index a51678a..b0b8fea 100644 --- a/src/main/java/org/yeshi/utils/generater/GeneraterUtil.java +++ b/src/main/java/org/yeshi/utils/generater/GeneraterUtil.java @@ -4,6 +4,7 @@ import org.yeshi.utils.generater.entity.admin.AdminGeneraterInfo; import org.yeshi.utils.generater.vo.ExceptionVO; import org.yeshi.utils.generater.vo.admin.controller.AdminControllerInfoVO; +import org.yeshi.utils.generater.vo.admin.controller.AdminVOVO; import org.yeshi.utils.generater.vo.admin.page.FormAddInfoVO; import org.yeshi.utils.generater.vo.admin.page.FormUpdateInfoVO; import org.yeshi.utils.generater.vo.admin.page.ListInfoVO; @@ -26,6 +27,12 @@ return result; } + public static String createAdminVO(AdminVOVO vo) throws IOException { + String result = FreemarkerUtils.generateInputStream(vo, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater/admin/adminVO.template")); + System.out.println(result); + return result; + } + public static String createMongoDBDao(MongoDBDaoVO vo) throws IOException { String result = FreemarkerUtils.generateInputStream(vo, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater/dao/mongoDBDao.template")); System.out.println(result); diff --git a/src/main/java/org/yeshi/utils/generater/annotation/admin/Show.java b/src/main/java/org/yeshi/utils/generater/annotation/admin/Show.java index 7512520..c624369 100644 --- a/src/main/java/org/yeshi/utils/generater/annotation/admin/Show.java +++ b/src/main/java/org/yeshi/utils/generater/annotation/admin/Show.java @@ -37,7 +37,7 @@ //鏄剧ず绫诲瀷 enum ShowType { - TEXT, IMG,SWITCH; + TEXT,DATETIME, IMG,SWITCH; } diff --git a/src/main/java/org/yeshi/utils/generater/entity/ColumnData.java b/src/main/java/org/yeshi/utils/generater/entity/ColumnData.java index 61e39d2..6066cbd 100644 --- a/src/main/java/org/yeshi/utils/generater/entity/ColumnData.java +++ b/src/main/java/org/yeshi/utils/generater/entity/ColumnData.java @@ -4,6 +4,7 @@ private String columnName; private String columnMehtod; private String type; + private String setColumnMehtodName; public ColumnData() { @@ -13,6 +14,7 @@ this.columnName = columnName; this.type = type; this.columnMehtod = "get" + (columnName.subSequence(0, 1) + "").toUpperCase() + columnName.subSequence(1, columnName.length()) + "()"; + this.setColumnMehtodName = "set" + (columnName.subSequence(0, 1) + "").toUpperCase() + columnName.subSequence(1, columnName.length()); } public String getColumnName() { @@ -39,4 +41,12 @@ public void setType(String type) { this.type = type; } + + public String getSetColumnMehtodName() { + return setColumnMehtodName; + } + + public void setSetColumnMehtodName(String setColumnMehtodName) { + this.setColumnMehtodName = setColumnMehtodName; + } } diff --git a/src/main/java/org/yeshi/utils/generater/entity/admin/AdminGeneraterInfo.java b/src/main/java/org/yeshi/utils/generater/entity/admin/AdminGeneraterInfo.java index ab34430..680df76 100644 --- a/src/main/java/org/yeshi/utils/generater/entity/admin/AdminGeneraterInfo.java +++ b/src/main/java/org/yeshi/utils/generater/entity/admin/AdminGeneraterInfo.java @@ -331,12 +331,14 @@ FormComponentSelect formComponentSelect = (FormComponentSelect) component; if (formComponentSelect.getApi() != null) { params.put("apiPath", formComponentSelect.getApi().getPath()); - List<KeyValue> list = new ArrayList<>(); - for (Iterator<String> its = formComponentSelect.getApi().getParams().keySet().iterator(); its.hasNext(); ) { - String key = its.next(); - list.add(new KeyValue(key, formComponentSelect.getApi().getParams().get(key) + "")); + if(formComponentSelect.getApi().getParams()!=null) { + List<KeyValue> list = new ArrayList<>(); + for (Iterator<String> its = formComponentSelect.getApi().getParams().keySet().iterator(); its.hasNext(); ) { + String key = its.next(); + list.add(new KeyValue(key, formComponentSelect.getApi().getParams().get(key) + "")); + } + params.put("apiParams", list); } - params.put("apiParams", list); } if (formComponentSelect.getValues() != null) { diff --git a/src/main/java/org/yeshi/utils/generater/entity/admin/FormVerifyType.java b/src/main/java/org/yeshi/utils/generater/entity/admin/FormVerifyType.java index ad69201..03d4aaa 100644 --- a/src/main/java/org/yeshi/utils/generater/entity/admin/FormVerifyType.java +++ b/src/main/java/org/yeshi/utils/generater/entity/admin/FormVerifyType.java @@ -7,7 +7,7 @@ * @date 2021/9/23 14:00 */ public enum FormVerifyType { - number("鏁板瓧"), phone("鐢佃瘽鍙风爜"), email("閭"), date("鏃ユ湡"), url("閾炬帴"), identity("韬唤璇�"), regex("姝e垯"),none("鏃犻獙璇佽鍒�"); + number("鏁板瓧"), phone("鐢佃瘽鍙风爜"), email("閭"), date("鏃ユ湡"),datetime("鏃堕棿"), url("閾炬帴"), identity("韬唤璇�"), regex("姝e垯"),none("鏃犻獙璇佽鍒�"); private FormVerifyType(String desc) { diff --git a/src/main/java/org/yeshi/utils/generater/mybatis/ColumnUtil.java b/src/main/java/org/yeshi/utils/generater/mybatis/ColumnUtil.java index 39d136f..a9793c5 100644 --- a/src/main/java/org/yeshi/utils/generater/mybatis/ColumnUtil.java +++ b/src/main/java/org/yeshi/utils/generater/mybatis/ColumnUtil.java @@ -13,187 +13,221 @@ import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.dom4j.tree.AbstractAttribute; +import org.yeshi.utils.StringUtil; public class ColumnUtil { - @SuppressWarnings("rawtypes") - public static void addColumnToMapper(String path, String columnName, String property, String type) { - File xmlPath = new File(path); - SAXReader reader = new SAXReader(); - Document document = null; - try { - document = reader.read(xmlPath); - Element root = document.getRootElement(); - // 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣 - List<Element> elementList = root.elements(); - // 閬嶅巻鎵�鏈夊瓙鑺傜偣 - for (Element e : elementList) { - if (e.getName().equals("resultMap")) { - AbstractAttribute attr = (AbstractAttribute) e.attribute("id"); - if ("BaseResultMap".equalsIgnoreCase(attr.getValue())) { - List list = e.elements("result"); - boolean isE = false; - for (int i = 0; i < list.size(); i++) { - Element item = (Element) list.get(i); - attr = (AbstractAttribute) item.attribute("property"); - if (attr.getValue().trim().equalsIgnoreCase(property)) { - isE = true; - break; - } - } - if (!isE) { - List<KeyPair> li = new ArrayList<>(); - li.add(new KeyPair("column", columnName)); - li.add(new KeyPair("property", property)); - li.add(new KeyPair("jdbcType", type)); - e.add(createElement("result", li, null)); - } - } - } else if (e.getName().equals("sql")) { - AbstractAttribute attr = (AbstractAttribute) e.attribute("id"); - if ("Base_Column_List".equalsIgnoreCase(attr.getValue())) { - String columns = e.getText(); - String[] cs = columns.split(","); - boolean isE = false; - for (String c : cs) { - if (c.trim().equalsIgnoreCase(columnName)) { - isE = true; - break; - } - } - if (!isE) { - columns += ("," + columnName); - e.setText(columns); - } - } - } else if (e.getName().equals("insert")) { - AbstractAttribute attr = (AbstractAttribute) e.attribute("id"); - if ("insert".equalsIgnoreCase(attr.getValue())) { - String insert = e.getText(); - String[] cs = insert.split("values "); - if (cs.length > 1) { - int start = cs[0].indexOf("("); - int end = cs[0].indexOf(")"); - String columns = cs[0].substring(start, end); - String[] cols = columns.split(","); - boolean isE = false; - for (String col : cols) { - if (col.trim().equalsIgnoreCase(columnName)) { - isE = true; - break; - } - } - if (!isE) { - cs[0] = cs[0].replace(columns, columns + ("," + columnName)); - start = cs[1].indexOf("("); - end = cs[1].indexOf(")"); - String columns2 = cs[1].substring(start, end); - cs[1] = cs[1].replace(columns2, - columns2 + String.format(",#{%s,jdbcType=%s}", property, type)); - insert = cs[0] + " values " + cs[1]; - e.setText(insert); - } - } + /** + * @author hxh + * @description 鏍规嵁灞炴�ц幏鍙杝ql涓殑椹煎嘲瀛楁 + * @date 15:44 2022/3/31 + * @param: property + * @return java.lang.String + **/ + public static String getColumnFromProperty(String property) { + StringBuffer buffer = new StringBuffer(); + List<String> temp = new ArrayList<>(); + for (int i = 0; i < property.length(); i++) { + //鏄惁涓哄ぇ鍐� + if (property.charAt(i) >= 65 && property.charAt(i) <= 90) { + temp.add(property.charAt(i) + ""); + } else { + //娑堣垂涔嬪墠鐨� + if (temp.size() > 0) { + buffer.append(("_" + StringUtil.concat(temp, "")).toLowerCase()); + temp.clear(); + } + buffer.append(property.charAt(i)); + } + } - } else if ("insertSelective".equalsIgnoreCase(attr.getValue())) { - List trims = e.elements("trim"); - Element els = (Element) trims.get(0); - boolean isE = false; - for (int i = 0; i < els.elements("if").size(); i++) { - String cn = ((Element) els.elements("if").get(i)).getText().replace(",", "").trim(); - if (columnName.equalsIgnoreCase(cn)) { - isE = true; - break; - } - } - if (!isE) { - List<KeyPair> list = new ArrayList<>(); - list.add(new KeyPair("test", String.format("%s != null", property))); - els.add(createElement("if", list, columnName + ",")); + if (temp.size() > 0) { + buffer.append(("_" + StringUtil.concat(temp, "")).toLowerCase()); + temp.clear(); + } + return buffer.toString(); + } - els = (Element) trims.get(1); - list = new ArrayList<>(); - list.add(new KeyPair("test", String.format("%s != null", property))); - els.add(createElement("if", list, String.format("#{%s,jdbcType=%s}", property, type))); - } - } - } else if (e.getName().equals("update")) { - AbstractAttribute attr = (AbstractAttribute) e.attribute("id"); - if ("updateByPrimaryKeySelective".equalsIgnoreCase(attr.getValue())) { - List list = ((Element) e.elements("set").get(0)).elements("if"); - boolean isE = false; - for (int i = 0; i < list.size(); i++) { - if (((Element) list.get(i)).getText().indexOf(columnName) > -1) { - isE = true; - break; - } - } - if (!isE) { - List<KeyPair> klist = new ArrayList<>(); - klist.add(new KeyPair("test", String.format("%s !=null", property))); - ((Element) e.elements("set").get(0)).add(createElement("if", klist, - String.format("%s =#{%s,jdbcType=%s},", columnName, property, type))); - } - } else if ("updateByPrimaryKey".equalsIgnoreCase(attr.getValue())) { - String value = e.getText(); - // 涓嶅瓨鍦ㄨ鍒� - if (value.indexOf(columnName) <= -1) { - int wpos = value.indexOf("where "); - if (value.substring(0, wpos).trim().endsWith(",")) - value = value.substring(0, wpos) - + String.format("%s =#{%s,jdbcType=%s},", columnName, property, type) + " " - + value.substring(wpos); - else - value = value.substring(0, wpos) + "," - + String.format("%s =#{%s,jdbcType=%s},", columnName, property, type) + " " - + value.substring(wpos); + @SuppressWarnings("rawtypes") + public static void addColumnToMapper(String path, String columnName, String property, String type) { + File xmlPath = new File(path); + SAXReader reader = new SAXReader(); + Document document = null; + try { + document = reader.read(xmlPath); + Element root = document.getRootElement(); + // 寰楀埌鏍瑰厓绱犵殑鎵�鏈夊瓙鑺傜偣 + List<Element> elementList = root.elements(); + // 閬嶅巻鎵�鏈夊瓙鑺傜偣 + for (Element e : elementList) { + if (e.getName().equals("resultMap")) { + AbstractAttribute attr = (AbstractAttribute) e.attribute("id"); + if ("BaseResultMap".equalsIgnoreCase(attr.getValue())) { + List list = e.elements("result"); + boolean isE = false; + for (int i = 0; i < list.size(); i++) { + Element item = (Element) list.get(i); + attr = (AbstractAttribute) item.attribute("property"); + if (attr.getValue().trim().equalsIgnoreCase(property)) { + isE = true; + break; + } + } + if (!isE) { + List<KeyPair> li = new ArrayList<>(); + li.add(new KeyPair("column", columnName)); + li.add(new KeyPair("property", property)); + li.add(new KeyPair("jdbcType", type)); + e.add(createElement("result", li, null)); + } + } + } else if (e.getName().equals("sql")) { + AbstractAttribute attr = (AbstractAttribute) e.attribute("id"); + if ("Base_Column_List".equalsIgnoreCase(attr.getValue())) { + String columns = e.getText(); + String[] cs = columns.split(","); + boolean isE = false; + for (String c : cs) { + if (c.trim().equalsIgnoreCase(columnName)) { + isE = true; + break; + } + } + if (!isE) { + columns += ("," + columnName); + e.setText(columns); + } + } - e.setText(value); - } - } + } else if (e.getName().equals("insert")) { + AbstractAttribute attr = (AbstractAttribute) e.attribute("id"); + if ("insert".equalsIgnoreCase(attr.getValue())) { + String insert = e.getText(); + String[] cs = insert.split("values "); + if (cs.length > 1) { + int start = cs[0].indexOf("("); + int end = cs[0].indexOf(")"); + String columns = cs[0].substring(start, end); + String[] cols = columns.split(","); + boolean isE = false; + for (String col : cols) { + if (col.trim().equalsIgnoreCase(columnName)) { + isE = true; + break; + } + } + if (!isE) { + cs[0] = cs[0].replace(columns, columns + ("," + columnName)); + start = cs[1].indexOf("("); + end = cs[1].indexOf(")"); + String columns2 = cs[1].substring(start, end); + cs[1] = cs[1].replace(columns2, + columns2 + String.format(",#{%s,jdbcType=%s}", property, type)); + insert = cs[0] + " values " + cs[1]; + e.setText(insert); + } + } - } - } - } catch (DocumentException e1) { - e1.printStackTrace(); - } - if (document != null) { - OutputFormat format = OutputFormat.createPrettyPrint(); - format.setEncoding("UTF-8"); - try { - XMLWriter writer = new XMLWriter(new FileOutputStream(path), format); - writer.write(document); - } catch (Exception e) { - e.printStackTrace(); - } - } - } + } else if ("insertSelective".equalsIgnoreCase(attr.getValue())) { + List trims = e.elements("trim"); + Element els = (Element) trims.get(0); + boolean isE = false; + for (int i = 0; i < els.elements("if").size(); i++) { + String cn = ((Element) els.elements("if").get(i)).getText().replace(",", "").trim(); + if (columnName.equalsIgnoreCase(cn)) { + isE = true; + break; + } + } + if (!isE) { + List<KeyPair> list = new ArrayList<>(); + list.add(new KeyPair("test", String.format("%s != null", property))); + els.add(createElement("if", list, columnName + ",")); - private static Element createElement(String qName, List<KeyPair> keyPairList, String value) { - Element element = DocumentHelper.createElement(qName); - for (KeyPair kp : keyPairList) { - element.addAttribute(kp.key, kp.value); - } - if (value != null) - element.setText(value); - return element; - } + els = (Element) trims.get(1); + list = new ArrayList<>(); + list.add(new KeyPair("test", String.format("%s != null", property))); + els.add(createElement("if", list, String.format("#{%s,jdbcType=%s}", property, type))); + } + } + + } else if (e.getName().equals("update")) { + AbstractAttribute attr = (AbstractAttribute) e.attribute("id"); + if ("updateByPrimaryKeySelective".equalsIgnoreCase(attr.getValue())) { + List list = ((Element) e.elements("set").get(0)).elements("if"); + boolean isE = false; + for (int i = 0; i < list.size(); i++) { + if (((Element) list.get(i)).getText().indexOf(columnName) > -1) { + isE = true; + break; + } + } + if (!isE) { + List<KeyPair> klist = new ArrayList<>(); + klist.add(new KeyPair("test", String.format("%s !=null", property))); + ((Element) e.elements("set").get(0)).add(createElement("if", klist, + String.format("%s =#{%s,jdbcType=%s},", columnName, property, type))); + } + } else if ("updateByPrimaryKey".equalsIgnoreCase(attr.getValue())) { + String value = e.getText(); + // 涓嶅瓨鍦ㄨ鍒� + if (value.indexOf(columnName) <= -1) { + int wpos = value.indexOf("where "); + if (value.substring(0, wpos).trim().endsWith(",")) + value = value.substring(0, wpos) + + String.format("%s =#{%s,jdbcType=%s},", columnName, property, type) + " " + + value.substring(wpos); + else + value = value.substring(0, wpos) + "," + + String.format("%s =#{%s,jdbcType=%s},", columnName, property, type) + " " + + value.substring(wpos); + + e.setText(value); + } + } + + } + } + } catch (DocumentException e1) { + e1.printStackTrace(); + } + if (document != null) { + OutputFormat format = OutputFormat.createPrettyPrint(); + format.setEncoding("UTF-8"); + try { + XMLWriter writer = new XMLWriter(new FileOutputStream(path), format); + writer.write(document); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + private static Element createElement(String qName, List<KeyPair> keyPairList, String value) { + Element element = DocumentHelper.createElement(qName); + for (KeyPair kp : keyPairList) { + element.addAttribute(kp.key, kp.value); + } + if (value != null) + element.setText(value); + return element; + } } class KeyPair { - String key; - String value; + String key; + String value; - public KeyPair(String key, String value) { - this.key = key; - this.value = value; - } + public KeyPair(String key, String value) { + this.key = key; + this.value = value; + } - public KeyPair() { + public KeyPair() { - } + } } diff --git a/src/main/java/org/yeshi/utils/generater/vo/admin/controller/AdminVOVO.java b/src/main/java/org/yeshi/utils/generater/vo/admin/controller/AdminVOVO.java new file mode 100644 index 0000000..9dc3015 --- /dev/null +++ b/src/main/java/org/yeshi/utils/generater/vo/admin/controller/AdminVOVO.java @@ -0,0 +1,119 @@ +package org.yeshi.utils.generater.vo.admin.controller; + +import org.springframework.data.annotation.Transient; +import org.yeshi.utils.generater.entity.ClassInfo; +import org.yeshi.utils.generater.entity.ColumnData; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +/** + * @author hxh + * @title: AdminVO + * @description: TODO + * @date 2022/4/7 18:24 + */ +public class AdminVOVO { + + private String name; + private String packageName; + private ClassInfo entity; + private List<ColumnData> columns; + + public static class Builder { + private Class entity; + private String packageName; + + public Builder setEntity(Class entity) { + this.entity = entity; + return this; + } + + public Builder setPackageName(String packageName) { + this.packageName = packageName; + return this; + } + + public AdminVOVO build() throws Exception { + if (entity == null) { + throw new Exception("entity涓嶈兘涓虹┖"); + } + if (packageName == null) { + throw new Exception("packageName涓嶈兘涓虹┖"); + } + AdminVOVO vo = new AdminVOVO(); + vo.setEntity(ClassInfo.create(entity)); + vo.setName(entity.getSimpleName() + "AdminVO"); + vo.setPackageName(packageName); + List<ColumnData> columnList = new ArrayList<>(); + Field[] fields = entity.getDeclaredFields(); + for (Field fd : fields) { + //private/public 闈瀎inal锛宻tatic灞炴�ф墠浼氬弬涓庤В鏋� + if (fd.getModifiers() != 1 && fd.getModifiers() != 2) { + continue; + } + boolean valid = true; + + Annotation[] as = fd.getAnnotations(); + for (Annotation a : as) { + //涓嶅弬涓庤В鏋� + if (a instanceof Transient || a instanceof java.beans.Transient) { + valid = false; + break; + } + } + if (!valid) { + continue; + } + + String property = fd.getName(); + + if(property.equalsIgnoreCase("createTime")||property.equalsIgnoreCase("updateTime")){ + continue; + } + + String type = fd.getType().getSimpleName(); + ColumnData columnData = new ColumnData(property, type); + columnList.add(columnData); + } + vo.setColumns(columnList); + return vo; + } + + } + + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public ClassInfo getEntity() { + return entity; + } + + public void setEntity(ClassInfo entity) { + this.entity = entity; + } + + public List<ColumnData> getColumns() { + return columns; + } + + public void setColumns(List<ColumnData> columns) { + this.columns = columns; + } +} diff --git a/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormAddInfoVO.java b/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormAddInfoVO.java index c8292a7..0c29421 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormAddInfoVO.java +++ b/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormAddInfoVO.java @@ -75,10 +75,12 @@ } FormHttpRequestInfoVO requestInfoVO = new FormHttpRequestInfoVO(); Map<String, String> apiParams = new HashMap<>(); - if (((List) row.getParams().get("apiParams")).size() > 0) { - List<KeyValue> apiParamsList = (List<KeyValue>) row.getParams().get("apiParams"); - for (KeyValue kv : apiParamsList) { - apiParams.put(kv.getKey(), kv.getValue()); + if (row.getParams().get("apiParams") != null) { + if (((List) row.getParams().get("apiParams")).size() > 0) { + List<KeyValue> apiParamsList = (List<KeyValue>) row.getParams().get("apiParams"); + for (KeyValue kv : apiParamsList) { + apiParams.put(kv.getKey(), kv.getValue()); + } } } requestInfoVO.setParams(apiParams); diff --git a/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormUpdateInfoVO.java b/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormUpdateInfoVO.java index 04da1ed..8704a00 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormUpdateInfoVO.java +++ b/src/main/java/org/yeshi/utils/generater/vo/admin/page/FormUpdateInfoVO.java @@ -77,10 +77,12 @@ } FormHttpRequestInfoVO requestInfoVO = new FormHttpRequestInfoVO(); Map<String, String> apiParams = new HashMap<>(); - if (((List) row.getParams().get("apiParams")).size() > 0) { - List<KeyValue> apiParamsList = (List<KeyValue>) row.getParams().get("apiParams"); - for (KeyValue kv : apiParamsList) { - apiParams.put(kv.getKey(), kv.getValue()); + if(row.getParams().get("apiParams")!=null) { + if (((List) row.getParams().get("apiParams")).size() > 0) { + List<KeyValue> apiParamsList = (List<KeyValue>) row.getParams().get("apiParams"); + for (KeyValue kv : apiParamsList) { + apiParams.put(kv.getKey(), kv.getValue()); + } } } requestInfoVO.setParams(apiParams); diff --git a/src/main/java/org/yeshi/utils/generater/vo/admin/page/ListInfoVO.java b/src/main/java/org/yeshi/utils/generater/vo/admin/page/ListInfoVO.java index 2432a60..757c026 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/admin/page/ListInfoVO.java +++ b/src/main/java/org/yeshi/utils/generater/vo/admin/page/ListInfoVO.java @@ -8,6 +8,7 @@ import org.yeshi.utils.generater.entity.admin.AdminGeneraterInfo; import org.yeshi.utils.generater.entity.admin.FormRowData; import org.yeshi.utils.generater.entity.admin.FormVerifyType; +import org.yeshi.utils.generater.mybatis.ColumnUtil; import java.util.ArrayList; import java.util.HashMap; @@ -53,11 +54,11 @@ ListInfoVO vo = new ListInfoVO(); vo.setListApi(generaterInfo.getControllerData().getMapping() + "/list"); if (generaterInfo.getAddFormRows() != null && generaterInfo.getAddFormRows().size() > 0) { - vo.setAddPagePath(generaterInfo.getEntity().getSimpleName().toLowerCase() + "_add.html"); + vo.setAddPagePath(ColumnUtil.getColumnFromProperty(generaterInfo.getEntity().getSimpleName()) + "_add.html"); } if (generaterInfo.getUpdateFormRows() != null && generaterInfo.getUpdateFormRows().size() > 0) { - vo.setUpdatePagePath(generaterInfo.getEntity().getSimpleName().toLowerCase() + "_update.html"); + vo.setUpdatePagePath(ColumnUtil.getColumnFromProperty(generaterInfo.getEntity().getSimpleName()) + "_update.html"); } vo.setSearchFormRows(generaterInfo.getSearchFormRows()); vo.setShowFileds(generaterInfo.getShowDataList()); @@ -99,10 +100,12 @@ } FormHttpRequestInfoVO requestInfoVO = new FormHttpRequestInfoVO(); Map<String, String> apiParams = new HashMap<>(); - if (((List) row.getParams().get("apiParams")).size() > 0) { - List<KeyValue> apiParamsList = (List<KeyValue>) row.getParams().get("apiParams"); - for (KeyValue kv : apiParamsList) { - apiParams.put(kv.getKey(), kv.getValue()); + if (row.getParams().get("apiParams") != null) { + if (((List) row.getParams().get("apiParams")).size() > 0) { + List<KeyValue> apiParamsList = (List<KeyValue>) row.getParams().get("apiParams"); + for (KeyValue kv : apiParamsList) { + apiParams.put(kv.getKey(), kv.getValue()); + } } } requestInfoVO.setParams(apiParams); diff --git a/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java b/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java index b86b3bc..347b1d1 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java +++ b/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java @@ -7,6 +7,7 @@ import org.yeshi.utils.generater.entity.*; import org.yeshi.utils.generater.mybatis.Column; import org.yeshi.utils.generater.mybatis.ColumnParseUtil; +import org.yeshi.utils.generater.mybatis.ColumnUtil; import org.yeshi.utils.generater.mybatis.Table; import org.yeshi.utils.generater.vo.ExceptionVO; import org.yeshi.utils.generater.vo.xmlconfig.dao.DaoData; @@ -113,13 +114,18 @@ } String property = fd.getName(); - String column = fd.getName(); + String column = null; for (Annotation a : as) { //涓嶅弬涓庤В鏋� if (a instanceof Column) { column = ((Column) a).name(); break; } + } + + //椹煎嘲鍐欐硶锛岄瀛楁瘝灏忓啓 + if (column == null) { + column = ColumnUtil.getColumnFromProperty(fd.getName()); } MybatisColumnData columData = new MybatisColumnData(column, property, fd.getType().getSimpleName(), ColumnParseUtil.getJDBCType(fd.getType().getName())); @@ -144,16 +150,19 @@ if (daoData != null) { //鏌ヨ鏉′欢浠庡閮ㄤ紶鍏� - for (DaoQuery query : daoData.getQueryList()) { - if (query.getName().equalsIgnoreCase(columData.getProperty())) { - if (fd.getType().getSimpleName().equalsIgnoreCase("Date")) { - daoQueryColumnList.add(new DaoQueryColumnData("max" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.lt)); - daoQueryColumnList.add(new DaoQueryColumnData("min" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.gte)); - } else { - daoQueryColumnList.add(new DaoQueryColumnData(columData.getProperty(), columData, fd.getType().getSimpleName(), query.getQueryType())); + if (daoData.getQueryList() != null) + for (DaoQuery query : daoData.getQueryList()) { + if (query.getName().equalsIgnoreCase(columData.getProperty())) { + if (fd.getType().getSimpleName().equalsIgnoreCase("Date")) { + daoQueryColumnList.add(new DaoQueryColumnData("max" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.lt)); + daoQueryColumnList.add(new DaoQueryColumnData("min" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.gte)); + } else { + daoQueryColumnList.add(new DaoQueryColumnData(columData.getProperty(), columData, fd.getType().getSimpleName(), query.getQueryType())); + } + } else if (query.getName().equalsIgnoreCase(columData.getColumn())) { + daoQueryColumnList.add(new DaoQueryColumnData(columData.getColumn(), columData, fd.getType().getSimpleName(), query.getQueryType())); } } - } } else { //鑾峰彇娉ㄨВ鏌ヨ鏉′欢 @@ -236,4 +245,6 @@ public void setTable(String table) { this.table = table; } + + } diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/XmlConfigParseUtil.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/XmlConfigParseUtil.java index a14bee6..c7bffe1 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/XmlConfigParseUtil.java +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/XmlConfigParseUtil.java @@ -7,6 +7,7 @@ import org.yeshi.utils.generater.annotation.admin.DaoQueryCondition; import org.yeshi.utils.generater.annotation.admin.Show; import org.yeshi.utils.generater.annotation.admin.form.Text; +import org.yeshi.utils.generater.entity.ClassInfo; import org.yeshi.utils.generater.entity.admin.FormVerifyType; import org.yeshi.utils.generater.vo.xmlconfig.admin.*; import org.yeshi.utils.generater.vo.xmlconfig.admin.form.*; @@ -36,7 +37,7 @@ */ public class XmlConfigParseUtil { - public static GenertorConfig parse(InputStream inputStream) throws Exception { + public static GenertorConfig parse(InputStream inputStream, ClassLoader classLoader) throws Exception { if (inputStream == null) { throw new FileNotFoundException(); } @@ -50,7 +51,7 @@ } Node rootNode = nodelist.item(0); String clazz = rootNode.getAttributes().getNamedItem("class").getNodeValue(); - genertorConfig.setEntity(Class.forName(clazz)); + genertorConfig.setEntity(classLoader.loadClass(clazz)); nodelist = rootNode.getChildNodes(); for (int i = 0; i < nodelist.getLength(); i++) { @@ -69,8 +70,6 @@ genertorConfig.setAdmin(parseAdmin(node)); } break; - - } @@ -110,6 +109,7 @@ data.setInterPackage(getNodeAttributeValue(node, "interPackage")); data.setImplPackage(getNodeAttributeValue(node, "implPackage")); data.setQueryPackage(getNodeAttributeValue(node, "queryPackage")); + data.setAdminVOPackage(getNodeAttributeValue(node, "adminVOPackage")); NodeList nodeList = node.getChildNodes(); for (int i = 0; i < nodeList.getLength(); i++) { @@ -117,6 +117,10 @@ ExceptionData exceptionData = new ExceptionData(); exceptionData.setPkg(getNodeAttributeValue(nodeList.item(i), "package")); exceptionData.setName(getNodeAttributeValue(nodeList.item(i), "name")); + String base = getNodeAttributeValue(nodeList.item(i), "base"); + if (base != null) { + exceptionData.setBase(new ClassInfo(base.split("\\.")[base.split("\\.").length - 1], base)); + } data.setException(exceptionData); break; } @@ -418,7 +422,7 @@ public static void main(String[] args) throws Exception { - GenertorConfig config = XmlConfigParseUtil.parse(new FileInputStream("D:\\workspace\\server\\utils\\src\\test\\test.xml")); + GenertorConfig config = XmlConfigParseUtil.parse(new FileInputStream("D:\\workspace\\server\\utils\\src\\test\\test.xml"), null); GeneraterManagerV2.getInstance().init("D:\\workspace\\server\\utils\\src\\test\\java", config); GeneraterManagerV2.getInstance().createWholeFunction(); System.out.println(config); diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ExceptionData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ExceptionData.java index 18a72d2..69b0374 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ExceptionData.java +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ExceptionData.java @@ -1,5 +1,7 @@ package org.yeshi.utils.generater.vo.xmlconfig.service; +import org.yeshi.utils.generater.entity.ClassInfo; + /** * @author hxh * @title: ExceptionData @@ -10,6 +12,8 @@ private String pkg; private String name; + private ClassInfo base; + public String getPkg() { return pkg; @@ -26,4 +30,12 @@ public void setName(String name) { this.name = name; } + + public ClassInfo getBase() { + return base; + } + + public void setBase(ClassInfo base) { + this.base = base; + } } diff --git a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ServiceData.java b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ServiceData.java index 623dc3b..3b1c4d4 100644 --- a/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ServiceData.java +++ b/src/main/java/org/yeshi/utils/generater/vo/xmlconfig/service/ServiceData.java @@ -12,6 +12,8 @@ private String queryPackage; private ExceptionData exception; + private String adminVOPackage; + public String getInterPackage() { return interPackage; } @@ -43,4 +45,12 @@ public void setQueryPackage(String queryPackage) { this.queryPackage = queryPackage; } + + public String getAdminVOPackage() { + return adminVOPackage; + } + + public void setAdminVOPackage(String adminVOPackage) { + this.adminVOPackage = adminVOPackage; + } } diff --git a/src/main/resources/generater/admin/add.ftl b/src/main/resources/generater/admin/add.ftl index 92fad6e..5c2a16e 100644 --- a/src/main/resources/generater/admin/add.ftl +++ b/src/main/resources/generater/admin/add.ftl @@ -8,12 +8,12 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/> - <link rel="stylesheet" href="./css/font.css"> - <link rel="stylesheet" href="./css/xadmin.css"> - <script type="text/javascript" src="./lib/layui/layui.js" charset="utf-8"></script> - <script type="text/javascript" src="./js/xadmin.js"></script> - <script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script> - <script src="js/http.js" type="text/javascript" charset="utf-8"></script> + <link rel="stylesheet" href="../css/font.css"> + <link rel="stylesheet" href="../css/xadmin.css"> + <script type="text/javascript" src="../lib/layui/layui.js" charset="utf-8"></script> + <script type="text/javascript" src="../js/xadmin.js"></script> + <script src="../js/vue.min.js" type="text/javascript" charset="utf-8"></script> + <script src="../js/http.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <!-- 璁㊣E8/9鏀寔濯掍綋鏌ヨ锛屼粠鑰屽吋瀹规爡鏍� --> <!--[if lt IE 9]> @@ -33,7 +33,7 @@ <span class="x-red">*</span> </#if> ${value.params.title}</label> - <div class="layui-input-block"> + <div class="layui-input-block"> <#switch value.type> <#case "CheckBox"><#include "/admin/form/checkBox.ftl" ><#break> <#case "Img"> <#include "/admin/form/img.ftl"><#break> @@ -141,11 +141,12 @@ </script> <script> - layui.use(['form', 'layer', 'jquery', 'upload'], function () { + layui.use(['form', 'layer', 'jquery', 'upload', 'laydate'], function () { $ = layui.jquery; var form = layui.form, layer = layui.layer, - upload = layui.upload; + upload = layui.upload, + laydate = layui.laydate; var verify = {}; <#list regexVerifyList as regex> @@ -156,6 +157,15 @@ //娓叉煋涓婁紶鎺т欢 uploadTool.init(upload); + + <#list rowsList as row > + <#if (row.type=="Text" && (row.params.inputType=="DATE"||row.params.inputType=="DATETIME"))> + laydate.render({ + elem: "intput[name=${row.key}]", //鎸囧畾鍏冪礌 + type: ${row.params.inputType?lower_case} + }); + </#if> + </#list> //鐩戝惉鎻愪氦 @@ -175,7 +185,7 @@ data.field[onkeys[0]][onkeys[1]] = value; } } - uploadTool.upload(function(){ + uploadTool.upload(function () { //鍙戝紓姝ワ紝鎶婃暟鎹彁浜ょ粰php ksapp.post('${addApi}', data.field, function (res) { if (res.code == 0) { diff --git a/src/main/resources/generater/admin/adminVO.template b/src/main/resources/generater/admin/adminVO.template new file mode 100644 index 0000000..887ab7a --- /dev/null +++ b/src/main/resources/generater/admin/adminVO.template @@ -0,0 +1,76 @@ +package ${packageName}; + +import org.yeshi.utils.TimeUtil; +import ${entity.clazz}; + +import java.util.Date; + +public class ${name} { +<#list columns as column > + <#if column.type=='Date'> + private String ${column.columnName}; + <#elseif column.type=='Boolean'> + private String ${column.columnName}; + <#else> + private ${column.type} ${column.columnName}; + </#if> +</#list> + + public ${entity.name} toEntity(SystemEnum system) { + ${entity.name} entity = new ${entity.name}(); + <#list columns as column > + <#if column.type=='Date'> + entity.${column.setColumnMehtodName}(new Date(TimeUtil.convertToTimeTemp(${column.columnName}, "yyyy-MM-dd HH:mm:ss"))); + <#elseif column.type=='Boolean'> + entity.${column.setColumnMehtodName}("on".equalsIgnoreCase(${column.columnName}) ? true : false); + <#else> + entity.${column.setColumnMehtodName}(${column.columnName}); + </#if> + </#list> + return entity; + } + + + public static ${name} create(${entity.name} entity) { + ${name} vo = new ${name}(); + <#list columns as column > + <#if column.type=='Date'> + vo.${column.setColumnMehtodName}(TimeUtil.getGernalTime(entity.${column.columnMehtod}.getTime(), "yyyy-MM-dd HH:mm:ss")); + <#elseif column.type=='Boolean'> + vo.${column.setColumnMehtodName}(entity.${column.columnMehtod} ? "on" : null); + <#else> + vo.${column.setColumnMehtodName}(entity.${column.columnMehtod}); + </#if> + </#list> + return vo; + } + + <#list columns as column > + <#if column.type=='Date'> + public String ${column.columnMehtod} { + return ${column.columnName}; + } + + public void ${column.setColumnMehtodName}(String ${column.columnName}) { + this.${column.columnName} = ${column.columnName}; + } + <#elseif column.type=='Boolean'> + public String ${column.columnMehtod} { + return ${column.columnName}; + } + + public void ${column.setColumnMehtodName}(String ${column.columnName}) { + this.${column.columnName} = ${column.columnName}; + } + <#else> + public ${column.type} ${column.columnMehtod} { + return ${column.columnName}; + } + + public void ${column.setColumnMehtodName}(${column.type} ${column.columnName}) { + this.${column.columnName} = ${column.columnName}; + } + </#if> + </#list> + +} diff --git a/src/main/resources/generater/admin/list.ftl b/src/main/resources/generater/admin/list.ftl index 31e4386..fe300e6 100644 --- a/src/main/resources/generater/admin/list.ftl +++ b/src/main/resources/generater/admin/list.ftl @@ -8,19 +8,19 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/> - <link rel="stylesheet" href="./css/font.css"> - <link rel="stylesheet" href="./css/xadmin.css"> - <script src="./lib/layui/layui.js" charset="utf-8"></script> - <link rel="stylesheet" href="./css/theme3049.min.css"> - <script src="./js/vue.min.js" type="text/javascript" charset="utf-8"></script> - <script type="text/javascript" src="./js/xadmin.js"></script> - <script src="./js/http.js" type="text/javascript" charset="utf-8"></script> + <link rel="stylesheet" href="../css/font.css"> + <link rel="stylesheet" href="../css/xadmin.css"> + <script src="../lib/layui/layui.js" charset="utf-8"></script> + <link rel="stylesheet" href="../css/theme3049.min.css"> + <script src="../js/vue.min.js" type="text/javascript" charset="utf-8"></script> + <script type="text/javascript" src="../js/xadmin.js"></script> + <script src="../js/http.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <!--[if lt IE 9]> <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script> <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script> <![endif]--> - <script src="./js/utils.js"></script> + <script src="../js/utils.js"></script> </head> <body> @@ -145,9 +145,9 @@ <script> var tableIns = null; + var app=null; $(function () { - - var app = new Vue({ + app = new Vue({ el: "#app", data: { key: '', @@ -170,7 +170,7 @@ <#list searchFormRows as row > <#if (row.type=="Text" && row.params.inputType=="DATE")> laydate.render({ - elem: "intput[name=${row.key}]" //鎸囧畾鍏冪礌 + elem: "input[name=${row.key}]" //鎸囧畾鍏冪礌 }); </#if> </#list> @@ -189,8 +189,10 @@ <#list showFileds as field > <#if field.showType=='TEXT'> {field: '${field.identifier}', width: 120, sort: false, title: "${field.title}"}, + <#elseif field.showType=='DATETIME'> + {field: '${field.identifier}', width: 150, sort: false, title: "${field.title}"}, <#elseif field.showType=='SWITCH'> - {field: '${field.identifier}', width: 120, sort: false, title: "${field.title}",templet:function(res){ + {field: '${field.identifier}', width: 80, sort: false, title: "${field.title}",templet:function(res){ if(res.${field.identifier}){ return " <input type=\"checkbox\" checked='true' disabled lay-skin=\"switch\""; }else{ @@ -269,6 +271,7 @@ if (res.code == 0) { //濉厖鏁版嵁 $("${request.fillTarget}").empty(); + $("${request.fillTarget}").append("<option value=''>璇烽�夋嫨</option>"); for (var i = 0; i < res.data.length; i++) { var html = "<option value='" + res.data[i].key + "'>"; html += res.data[i].value + "</option>"; @@ -316,9 +319,16 @@ }, </#if> search: function (params) { + + var ps = {}; + for (var key in params) { + if (params[key].length > 0) { + ps[key] = params[key]; + } + } //鏁版嵁閲嶈浇 tableIns.reload({ - where: params, + where: ps, page: { curr: 1 //閲嶆柊浠庣 1 椤靛紑濮� } diff --git a/src/main/resources/generater/admin/update.ftl b/src/main/resources/generater/admin/update.ftl index 23cbc86..4134409 100644 --- a/src/main/resources/generater/admin/update.ftl +++ b/src/main/resources/generater/admin/update.ftl @@ -8,12 +8,12 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/> - <link rel="stylesheet" href="./css/font.css"> - <link rel="stylesheet" href="./css/xadmin.css"> - <script type="text/javascript" src="./lib/layui/layui.js" charset="utf-8"></script> - <script type="text/javascript" src="./js/xadmin.js"></script> - <script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script> - <script src="js/http.js" type="text/javascript" charset="utf-8"></script> + <link rel="stylesheet" href="../css/font.css"> + <link rel="stylesheet" href="../css/xadmin.css"> + <script type="text/javascript" src="../lib/layui/layui.js" charset="utf-8"></script> + <script type="text/javascript" src="../js/xadmin.js"></script> + <script src="../js/vue.min.js" type="text/javascript" charset="utf-8"></script> + <script src="../js/http.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <!-- 璁㊣E8/9鏀寔濯掍綋鏌ヨ锛屼粠鑰屽吋瀹规爡鏍� --> <!--[if lt IE 9]> @@ -163,11 +163,12 @@ </script> <script> - layui.use(['form', 'layer', 'jquery', 'upload'], function () { + layui.use(['form', 'layer', 'jquery', 'upload','laydate'], function () { $ = layui.jquery; var form = layui.form, layer = layui.layer, - upload = layui.upload; + upload = layui.upload, + laydate= layui.laydate; var verify = {}; <#list regexVerifyList as regex> @@ -176,6 +177,15 @@ //鑷畾涔夐獙璇佽鍒� form.verify(verify); + <#list rowsList as row > + <#if (row.type=="Text" && (row.params.inputType=="DATE"||row.params.inputType=="DATETIME"))> + laydate.render({ + elem: "intput[name=${row.key}]", //鎸囧畾鍏冪礌 + type: ${row.params.inputType?lower_case} + }); + </#if> + </#list> + //娓叉煋涓婁紶鎺т欢 uploadTool.init(upload); diff --git a/src/main/resources/generater/dao/mybatisDBXML.ftl b/src/main/resources/generater/dao/mybatisDBXML.ftl index 1b420d4..59939c2 100644 --- a/src/main/resources/generater/dao/mybatisDBXML.ftl +++ b/src/main/resources/generater/dao/mybatisDBXML.ftl @@ -49,7 +49,7 @@ values <trim prefix="(" suffix=")" suffixOverrides=","> <#list columnList as column> - <#noparse>#{</#noparse>${column.property}},jdbcType=${column.jdbcType}}, + <#noparse>#{</#noparse>${column.property},jdbcType=${column.jdbcType}}, </#list> </trim> diff --git a/src/main/resources/schemas/generator.dtd b/src/main/resources/schemas/generator.dtd index 63026be..046b776 100644 --- a/src/main/resources/schemas/generator.dtd +++ b/src/main/resources/schemas/generator.dtd @@ -19,9 +19,13 @@ <!ATTLIST service interPackage CDATA #REQUIRED> <!ATTLIST service implPackage CDATA #REQUIRED> <!ATTLIST service queryPackage CDATA #REQUIRED> + <!ATTLIST service adminVOPackage CDATA #IMPLIED> + + <!ELEMENT exception EMPTY> <!ATTLIST exception package CDATA #REQUIRED> <!ATTLIST exception name CDATA #IMPLIED> + <!ATTLIST exception base CDATA #IMPLIED> <!--琛ㄥ崟閰嶇疆淇℃伅 --> @@ -52,7 +56,7 @@ <!ATTLIST column property CDATA #REQUIRED> <!ATTLIST column title CDATA #REQUIRED> <!ATTLIST column order CDATA "0"> - <!ATTLIST column showType (TEXT|IMG|SWITCH) #IMPLIED> + <!ATTLIST column showType (TEXT|DATETIME|IMG|SWITCH) #IMPLIED> <!ATTLIST column imgWidth CDATA "-1"> <!ATTLIST column imgHeight CDATA "-1"> @@ -74,7 +78,7 @@ <!ELEMENT verify EMPTY> - <!ATTLIST verify type (number|phone|email|date|url|identity|regex|none) #REQUIRED> + <!ATTLIST verify type (number|phone|email|date|datetime|url|identity|regex|none) #REQUIRED> <!ATTLIST verify express CDATA #IMPLIED> <!ATTLIST verify notify CDATA #IMPLIED> <!ATTLIST verify require (true|false) #IMPLIED> -- Gitblit v1.8.0