Sfoglia il codice sorgente

web端代码生成器开发中 未完成

吴学文 7 anni fa
parent
commit
d7e1f44221
20 ha cambiato i file con 786 aggiunte e 14 eliminazioni
  1. 4 4
      WebService/src/main/java/com/java110/web/components/community/CommunityManageComponent.java
  2. 1 1
      WebService/src/main/java/com/java110/web/smo/community/ICommunityManageSMO.java
  3. 2 3
      WebService/src/main/java/com/java110/web/smo/community/impl/ListCommunitysSMOImpl.java
  4. 51 0
      WebService/src/main/resources/components/add-community/addCommunity.html
  5. 41 0
      WebService/src/main/resources/components/add-community/addCommunity.js
  6. 4 2
      WebService/src/main/resources/components/community-manage/communityManage.html
  7. 4 4
      WebService/src/main/resources/components/community-manage/communityManage.js
  8. 4 0
      java110-code-generator/pom.xml
  9. 16 0
      java110-code-generator/src/main/java/com/java110/code/BaseGenerator.java
  10. 211 0
      java110-code-generator/src/main/java/com/java110/code/web/GeneratorManagerComponent.java
  11. 17 0
      java110-code-generator/src/main/java/com/java110/code/web/GeneratorStart.java
  12. 11 0
      java110-code-generator/src/main/resources/web/manage/ApiDataVo.java
  13. 19 0
      java110-code-generator/src/main/resources/web/manage/ApiVo.java
  14. 21 0
      java110-code-generator/src/main/resources/web/manage/IListSMO.java
  15. 88 0
      java110-code-generator/src/main/resources/web/manage/ListListener.java
  16. 66 0
      java110-code-generator/src/main/resources/web/manage/ListSMOImpl.java
  17. 40 0
      java110-code-generator/src/main/resources/web/manage/ManageComponent.java
  18. 47 0
      java110-code-generator/src/main/resources/web/manage/manage.html
  19. 60 0
      java110-code-generator/src/main/resources/web/manage/manage.js
  20. 79 0
      java110-code-generator/src/main/resources/web/template_1.json

+ 4 - 4
WebService/src/main/java/com/java110/web/components/community/CommunityManageComponent.java

@@ -2,7 +2,7 @@ package com.java110.web.components.community;
 
 
 import com.java110.core.context.IPageData;
-import com.java110.web.smo.community.ICommunityManageSMO;
+import com.java110.web.smo.community.IListCommunitysManageSMO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
@@ -19,7 +19,7 @@ import org.springframework.stereotype.Component;
 public class CommunityManageComponent {
 
     @Autowired
-    private ICommunityManageSMO communityManageSMOImpl;
+    private IListCommunitysManageSMO communityManageSMOImpl;
 
     /**
      * 查询小区列表
@@ -30,11 +30,11 @@ public class CommunityManageComponent {
         return communityManageSMOImpl.listCommunitys(pd);
     }
 
-    public ICommunityManageSMO getCommunityManageSMOImpl() {
+    public IListCommunitysManageSMO getCommunityManageSMOImpl() {
         return communityManageSMOImpl;
     }
 
-    public void setCommunityManageSMOImpl(ICommunityManageSMO communityManageSMOImpl) {
+    public void setCommunityManageSMOImpl(IListCommunitysManageSMO communityManageSMOImpl) {
         this.communityManageSMOImpl = communityManageSMOImpl;
     }
 }

+ 1 - 1
WebService/src/main/java/com/java110/web/smo/community/ICommunityManageSMO.java

@@ -9,7 +9,7 @@ import org.springframework.http.ResponseEntity;
  *
  * add by wuxw 2019-06-29
  */
-public interface ICommunityManageSMO {
+public interface IListCommunitysManageSMO {
 
     /**
      * 查询小区信息

+ 2 - 3
WebService/src/main/java/com/java110/web/smo/community/impl/ListCommunitysSMOImpl.java

@@ -4,13 +4,12 @@ import com.alibaba.fastjson.JSONObject;
 import com.java110.common.constant.PrivilegeCodeConstant;
 import com.java110.common.constant.ServiceConstant;
 import com.java110.common.exception.SMOException;
-import com.java110.common.util.Assert;
 import com.java110.common.util.BeanConvertUtil;
 import com.java110.core.client.RestTemplate;
 import com.java110.core.context.IPageData;
 import com.java110.entity.component.ComponentValidateResult;
 import com.java110.web.core.AbstractComponentSMO;
-import com.java110.web.smo.community.ICommunityManageSMO;
+import com.java110.web.smo.community.IListCommunitysManageSMO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
@@ -22,7 +21,7 @@ import java.util.Map;
  * 查询小区服务类
  */
 @Service("listCommunitysSMOImpl")
-public class ListCommunitysSMOImpl extends AbstractComponentSMO implements ICommunityManageSMO {
+public class ListCommunitysSMOImpl extends AbstractComponentSMO implements IListCommunitysManageSMO {
 
     @Autowired
     private RestTemplate restTemplate;

+ 51 - 0
WebService/src/main/resources/components/add-community/addCommunity.html

@@ -0,0 +1,51 @@
+<div class="row">
+    <div class="col-lg-12">
+        <div class="ibox ">
+            <div class="ibox-title">
+                <h5>小区信息</h5>
+            </div>
+            <div class="ibox-content">
+                <div>
+                    <div>
+                        <div class="form-group row">
+                            <label class="col-sm-2 col-form-label">小区名称</label>
+                            <div class="col-sm-10">
+                                <input v-model="addCommunityInfo.name" type="text" placeholder="必填,请小区名称,如格兰小镇(西宁)" class="form-control">
+                            </div>
+                        </div>
+                        <div class="form-group row">
+                            <label class="col-sm-2 col-form-label">车品牌</label>
+                            <div class="col-sm-10">
+                                <input v-model="addCommunityInfo.carBrand" type="text" placeholder="必填,请填写车品牌,如 宝马X6" class="form-control">
+                            </div>
+                        </div>
+                        <div class="form-group row">
+                            <label class="col-sm-2 col-form-label">车类型</label>
+                            <div class="col-sm-10">
+                                <select class="custom-select" v-model="addCommunityInfo.carType">
+                                    <option selected  disabled value="">必填,请选择类型</option>
+                                    <option value="9901">家用小汽车</option>
+                                    <option value="9902">客车</option>
+                                    <option value="9903">货车</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="form-group row">
+                            <label class="col-sm-2 col-form-label">颜色</label>
+                            <div class="col-sm-10">
+                                <input v-model="addCommunityInfo.carColor" type="text" placeholder="必填,请填写车颜色,如白色" class="form-control">
+                            </div>
+                        </div>
+
+                        <div class="form-group row">
+                            <label class="col-sm-2 col-form-label">备注</label>
+                            <div class="col-sm-10">
+                                <textarea v-model="addCommunityInfo.carRemark" type="text" placeholder="请填写备注信息" rows="3" class="form-control"></textarea>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 41 - 0
WebService/src/main/resources/components/add-community/addCommunity.js

@@ -0,0 +1,41 @@
+/**
+    权限组
+**/
+(function(vc){
+
+    vc.extends({
+        propTypes: {
+            callBackComponent:vc.propTypes.string
+        },
+        data:{
+            addCarInfo:{
+                carNum:'',
+                carBrand:'',
+                carType:'',
+                carColor:'',
+                carRemark:""
+            }
+        },
+        watch:{
+            addCarInfo:{
+                deep: true,
+                handler:function(){
+                    vc.emit($props.callBackComponent,'notify',vc.component.addCarInfo);
+
+                }
+             }
+        },
+        _initMethod:function(){
+
+        },
+        _initEvent:function(){
+
+
+        },
+        methods:{
+
+
+        }
+    });
+
+})(window.vc);

+ 4 - 2
WebService/src/main/resources/components/community-manage/communityManage.html

@@ -51,8 +51,8 @@
                                 {{_showCommunityStatus(community.auditStatusCd)}}
                             </td>
                             <td class="text-right">
-                                <div class="btn-group" v-if="community.auditStatusCd == '0000'">
-                                    <button class="btn-white btn btn-xs" v-on:click="_openExitCommunityModel(community)">申请退出</button>
+                                <div class="btn-group">
+                                    <button class="btn-white btn btn-xs" v-on:click="_openEditCommunityModel(floor)">修改</button>
                                 </div>
                             </td>
                         </tr>
@@ -72,4 +72,6 @@
         </div>
     </div>
 
+    <vc:create name="addCommunity"></vc:create>
+
 </div>

+ 4 - 4
WebService/src/main/resources/components/community-manage/communityManage.js

@@ -46,11 +46,11 @@
                              }
                            );
             },
-            _openEnterCommunityModal:function(){
-                vc.emit('storeEnterCommunity','openStoreEnterCommunity',{});
+            _openAddCommunityModal:function(){
+                vc.emit('addCommunity','openAddCommunity',{});
             },
-            _openExitCommunityModel:function(_community){
-                vc.emit('storeExitCommunity','openStoreExitCommunityModal',_community);
+            _openEditCommunityModel:function(_community){
+                vc.emit('editCommunity','openEditCommunityModal',_community);
             },
             _showCommunityStatus(_statusCd){
                 if(_statusCd == '1000'){

+ 4 - 0
java110-code-generator/pom.xml

@@ -28,6 +28,10 @@
             <version>4.11</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 16 - 0
java110-code-generator/src/main/java/com/java110/code/BaseGenerator.java

@@ -1,5 +1,7 @@
 package com.java110.code;
 
+import com.alibaba.fastjson.JSONObject;
+
 import java.io.*;
 
 public class BaseGenerator {
@@ -50,6 +52,10 @@ public class BaseGenerator {
     public static void writeFile(String filePath,String fileName) {
         try {
             File writeName = new File(filePath); // 相对路径,如果没有则要建立一个新的output.txt文件
+            File fileParent = writeName.getParentFile();
+            if(!fileParent.exists()){
+                fileParent.mkdirs();
+            }
             writeName.createNewFile(); // 创建新文件,有同名的文件的话直接覆盖
             try (FileWriter writer = new FileWriter(writeName);
                  BufferedWriter out = new BufferedWriter(writer)
@@ -61,4 +67,14 @@ public class BaseGenerator {
             e.printStackTrace();
         }
     }
+
+    protected String replaceTemplateContext(String srcStr, JSONObject data){
+        return srcStr.replace("@@templateName@@", data.getString("templateName"))
+                .replace("@@templateCode@@", data.getString("templateCode"))
+                .replace("@@TemplateCode@@", toUpperCaseFirstOne(data.getString("templateCode")))
+                .replace("@@templateKey@@", data.getString("templateKey"))
+                .replace("@@TemplateKey@@", toUpperCaseFirstOne(data.getString("templateKey")))
+                .replace("@@templateKeyName@@", data.getString("templateKeyName"))
+                .replace("@@TEMPLATECODE@@", data.getString("templateCode").toUpperCase());
+    }
 }

+ 211 - 0
java110-code-generator/src/main/java/com/java110/code/web/GeneratorManagerComponent.java

@@ -0,0 +1,211 @@
+package com.java110.code.web;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.code.BaseGenerator;
+
+public class GeneratorManagerComponent extends BaseGenerator {
+
+    public void generator(JSONObject data) {
+
+        //处理组件
+        generatorComponentHtml(data);
+        generatorComponentJs(data);
+        generatorComponentJava(data);
+        genneratorIListSmo(data);
+        genneratorListSmoImpl(data);
+        genneratorListListener(data);
+        genneratorVo(data);
+
+        genneratorDataVo(data);
+
+
+    }
+
+    /**
+     * 生成 html js java 类
+     *
+     * @param data
+     */
+    private void generatorComponentHtml(JSONObject data) {
+
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/web/manage/manage.html").getFile());
+        String fileContext = sb.toString();
+
+        fileContext = super.replaceTemplateContext(fileContext, data);
+
+        // 处理 th 信息
+
+        StringBuffer thSb = new StringBuffer();
+        StringBuffer tdSb = new StringBuffer();
+        thSb.append("                            <th>" + data.getString("templateKeyName") + "</th>\n");
+
+        tdSb.append("                            <td>{{" + data.getString("templateCode") + "." + data.getString("templateKey") + "}}</td>\n");
+
+        JSONArray columns = data.getJSONArray("columns");
+        for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
+            JSONObject column = columns.getJSONObject(columnIndex);
+            thSb.append("                            <th>" + column.getString("cnCode") + "</th>\n");
+
+            tdSb.append("                            <td>{{" + data.getString("templateCode") + "." + column.getString("code") + "}}</td>\n");
+        }
+        thSb.append("                            <th class=\"text-right\">操作</th>\n");
+        tdSb.append("                            <td><div class=\"btn-group\">\n" +
+                "                                    <button class=\"btn-white btn btn-xs\" v-on:click=\"_openEdit"+toUpperCaseFirstOne(data.getString("templateCode"))+"Model("+data.getString("templateCode")+")\">修改</button>\n" +
+                "                                </div>\n" +
+                "                                <div class=\"btn-group\">\n" +
+                "                                    <button class=\"btn-white btn btn-xs\" v-on:click=\"_openDel"+toUpperCaseFirstOne(data.getString("templateCode"))+"Model("+data.getString("templateCode")+")\">删除</button>\n" +
+                "                                </div></td>\n");
+
+        fileContext = fileContext.replace("@@columnsCnCode@@", thSb.toString())
+                                .replace("@@columnsName@@", tdSb.toString());
+
+
+
+        String writePath = this.getClass().getResource("/").getPath()
+                +"out/web/component/"+data.getString("templateCode")+"-manage/"+data.getString("templateCode")+"Manage.html";
+        System.out.printf("writePath: " + writePath);
+        writeFile(writePath,
+                fileContext);
+
+
+    }
+
+    /**
+     * 生成 html js java 类
+     *
+     * @param data
+     */
+    private void generatorComponentJs(JSONObject data) {
+
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/web/manage/manage.js").getFile());
+        String fileContext = sb.toString();
+
+        fileContext = super.replaceTemplateContext(fileContext, data);
+
+        String writePath = this.getClass().getResource("/").getPath()
+                +"out/web/component/"+data.getString("templateCode")+"-manage/"+data.getString("templateCode")+"Manage.js";
+        System.out.printf("writePath: " + writePath);
+        writeFile(writePath,
+                fileContext);
+
+
+    }
+
+    /**
+     * 生成 html js java 类
+     *
+     * @param data
+     */
+    private void generatorComponentJava(JSONObject data) {
+
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/web/manage/ManageComponent.java").getFile());
+        String fileContext = sb.toString();
+
+        fileContext = super.replaceTemplateContext(fileContext, data);
+
+        String writePath = this.getClass().getResource("/").getPath()
+                +"out/web/component/java/"+data.getString("templateCode")+"/"+toUpperCaseFirstOne(data.getString("templateCode"))+"ManageComponent.java";
+        System.out.printf("writePath: " + writePath);
+        writeFile(writePath,
+                fileContext);
+
+
+    }
+
+    /**
+     * 生成接口类
+     * @param data
+     */
+    private void genneratorIListSmo(JSONObject data){
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/web/manage/IListSMO.java").getFile());
+        String fileContext = sb.toString();
+
+        fileContext = super.replaceTemplateContext(fileContext, data);
+
+        String writePath = this.getClass().getResource("/").getPath()
+                +"out/web/smo/"+data.getString("templateCode")+"/IList"+toUpperCaseFirstOne(data.getString("templateCode"))+"sSMO.java";
+        System.out.printf("writePath: " + writePath);
+        writeFile(writePath,
+                fileContext);
+    }
+
+    /**
+     * 生成接口类
+     * @param data
+     */
+    private void genneratorListSmoImpl(JSONObject data){
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/web/manage/ListSMOImpl.java").getFile());
+        String fileContext = sb.toString();
+
+        fileContext = super.replaceTemplateContext(fileContext, data);
+
+        String writePath = this.getClass().getResource("/").getPath()
+                +"out/web/smo/"+data.getString("templateCode")+"/List"+toUpperCaseFirstOne(data.getString("templateCode"))+"sSMOImpl.java";
+        System.out.printf("writePath: " + writePath);
+        writeFile(writePath,
+                fileContext);
+    }
+
+    /**
+     * 生成API 侦听处理类
+     * @param data
+     */
+    private void genneratorListListener(JSONObject data){
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/web/manage/ListListener.java").getFile());
+        String fileContext = sb.toString();
+
+        fileContext = super.replaceTemplateContext(fileContext, data);
+
+        String writePath = this.getClass().getResource("/").getPath()
+                +"out/api/listener/"+data.getString("templateCode")+"/List"+toUpperCaseFirstOne(data.getString("templateCode"))+"sListener.java";
+        System.out.printf("writePath: " + writePath);
+        writeFile(writePath,
+                fileContext);
+    }
+
+    private void genneratorVo(JSONObject data){
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/web/manage/ApiVo.java").getFile());
+        String fileContext = sb.toString();
+
+        fileContext = super.replaceTemplateContext(fileContext, data);
+
+        String writePath = this.getClass().getResource("/").getPath()
+                +"out/api/vo/"+data.getString("templateCode")+"/Api"+toUpperCaseFirstOne(data.getString("templateCode"))+"Vo.java";
+        System.out.printf("writePath: " + writePath);
+        writeFile(writePath,
+                fileContext);
+    }
+
+    private void genneratorDataVo(JSONObject data){
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/web/manage/ApiDataVo.java").getFile());
+        String fileContext = sb.toString();
+
+        fileContext = super.replaceTemplateContext(fileContext, data);
+        JSONArray columns = data.getJSONArray("columns");
+        String variable = "";
+        String variableGetSet = "";
+        for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
+            JSONObject column = columns.getJSONObject(columnIndex);
+            String key = column.getString("code");
+            variable += "private String " + key + ";\n";
+
+            variableGetSet += "public String get" + toUpperCaseFirstOne(key) + "() {\n"
+                    + "        return " + key + ";\n"
+                    + "    }\n";
+            variableGetSet += "public void set" + toUpperCaseFirstOne(key) + "(String " + key + ") {\n"
+                    + "        this." + key + " = " + key + ";\n"
+                    + "    }\n";
+        }
+
+        fileContext = fileContext.replace("@@templateColumns@@", variable + variableGetSet);
+
+        String writePath = this.getClass().getResource("/").getPath()
+                +"out/api/vo/"+data.getString("templateCode")+"/Api"+toUpperCaseFirstOne(data.getString("templateCode"))+"DataVo.java";
+        System.out.printf("writePath: " + writePath);
+        writeFile(writePath,
+                fileContext);
+    }
+
+}

+ 17 - 0
java110-code-generator/src/main/java/com/java110/code/web/GeneratorStart.java

@@ -0,0 +1,17 @@
+package com.java110.code.web;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.code.BaseGenerator;
+
+public class GeneratorStart extends BaseGenerator {
+
+    public static void main(String[] args) {
+        //加载配置
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/web/template_1.json").getFile());
+
+        JSONObject data = JSONObject.parseObject(sb.toString());
+
+        GeneratorManagerComponent managerComponent = new GeneratorManagerComponent();
+        managerComponent.generator(data);
+    }
+}

+ 11 - 0
java110-code-generator/src/main/resources/web/manage/ApiDataVo.java

@@ -0,0 +1,11 @@
+package com.java110.vo.api.@@templateCode@@;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class Api@@TemplateCode@@DataVo implements Serializable {
+
+    @@templateColumns@@
+
+
+}

+ 19 - 0
java110-code-generator/src/main/resources/web/manage/ApiVo.java

@@ -0,0 +1,19 @@
+package com.java110.vo.api.@@templateCode@@;
+
+import com.java110.vo.MorePageVo;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class Api@@TemplateCode@@Vo extends MorePageVo implements Serializable {
+    List<Api@@TemplateCode@@DataVo> @@templateCode@@s;
+
+
+    public List<Api@@TemplateCode@@DataVo> get@@TemplateCode@@s() {
+        return @@templateCode@@s;
+    }
+
+    public void set@@TemplateCode@@s(List<Api@@TemplateCode@@DataVo> @@templateCode@@s) {
+        this.@@templateCode@@s = @@templateCode@@s;
+    }
+}

+ 21 - 0
java110-code-generator/src/main/resources/web/manage/IListSMO.java

@@ -0,0 +1,21 @@
+package com.java110.web.smo.community;
+
+import com.java110.common.exception.SMOException;
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * @@templateName@@管理服务接口类
+ *
+ * add by wuxw 2019-06-29
+ */
+public interface IList@@TemplateCode@@sSMO {
+
+    /**
+     * 查询@@templateName@@信息
+     * @param pd 页面数据封装
+     * @return ResponseEntity 对象数据
+     * @throws SMOException 业务代码层
+     */
+    ResponseEntity<String> list@@TemplateCode@@s(IPageData pd) throws SMOException;
+}

+ 88 - 0
java110-code-generator/src/main/resources/web/manage/ListListener.java

@@ -0,0 +1,88 @@
+package com.java110.api.listener.@@templateCode@@;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.common.constant.ServiceCodeConstant;
+import com.java110.common.util.BeanConvertUtil;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.smo.@@templateCode@@.I@@TemplateCode@@InnerServiceSMO;
+import com.java110.dto.@@templateCode@@.@@TemplateCode@@Dto;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.vo.api.@@templateCode@@.Api@@TemplateCode@@DataVo;
+import com.java110.vo.api.@@templateCode@@.Api@@TemplateCode@@Vo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 查询小区侦听类
+ */
+@Java110Listener("list@@TemplateCode@@sListener")
+public class List@@TemplateCode@@Listener extends AbstractServiceApiListener {
+
+    @Autowired
+    private I@@TemplateCode@@InnerServiceSMO @@templateCode@@InnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_LIST_@@@@TEMPLATECODE@@@@S;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.GET;
+    }
+
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+
+    public I@@TemplateCode@@InnerServiceSMO get@@TemplateCode@@InnerServiceSMOImpl() {
+        return @@templateCode@@InnerServiceSMOImpl;
+    }
+
+    public void set@@TemplateCode@@InnerServiceSMOImpl(I@@TemplateCode@@InnerServiceSMO @@templateCode@@InnerServiceSMOImpl) {
+        this.@@templateCode@@InnerServiceSMOImpl = @@templateCode@@InnerServiceSMOImpl;
+    }
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        super.validatePageInfo(reqJson);
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+        @@TemplateCode@@Dto @@templateCode@@Dto = BeanConvertUtil.covertBean(reqJson, @@TemplateCode@@Dto.class);
+
+        int count = @@templateCode@@InnerServiceSMOImpl.query@@TemplateCode@@sCount(@@templateCode@@Dto);
+
+        List<Api@@TemplateCode@@DataVo> @@templateCode@@s = null;
+
+        if (count > 0) {
+            @@templateCode@@s = BeanConvertUtil.covertBeanList(@@templateCode@@InnerServiceSMOImpl.query@@TemplateCode@@s(@@templateCode@@Dto), Api@@TemplateCode@@DataVo.class);
+        } else {
+            @@templateCode@@s = new ArrayList<>();
+        }
+
+        Api@@TemplateCode@@Vo api@@TemplateCode@@Vo = new Api@@TemplateCode@@Vo();
+
+        api@@TemplateCode@@Vo.setTotal(count);
+        api@@TemplateCode@@Vo.setRecords((int) Math.ceil((double) count / (double) reqJson.getInteger("row")));
+        api@@TemplateCode@@Vo.set@@TemplateCode@@s(@@templateCode@@s);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(api@@TemplateCode@@Vo), HttpStatus.OK);
+
+        context.setResponseEntity(responseEntity);
+
+    }
+}

+ 66 - 0
java110-code-generator/src/main/resources/web/manage/ListSMOImpl.java

@@ -0,0 +1,66 @@
+package com.java110.web.smo.@@templateCode@@.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.constant.PrivilegeCodeConstant;
+import com.java110.common.constant.ServiceConstant;
+import com.java110.common.exception.SMOException;
+import com.java110.common.util.BeanConvertUtil;
+import com.java110.core.client.RestTemplate;
+import com.java110.core.context.IPageData;
+import com.java110.entity.component.ComponentValidateResult;
+import com.java110.web.core.AbstractComponentSMO;
+import com.java110.web.smo.@@templateCode@@.IList@@TemplateCode@@sManageSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * 查询@@templateCode@@服务类
+ */
+@Service("list@@TemplateCode@@sSMOImpl")
+public class List@@TemplateCode@@sSMOImpl extends AbstractComponentSMO implements IList@@TemplateCode@@sSMO {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    public ResponseEntity<String> list@@TemplateCode@@s(IPageData pd) throws SMOException {
+        return businessProcess(pd);
+    }
+
+    @Override
+    protected void validate(IPageData pd, JSONObject paramIn) {
+
+        super.validatePageInfo(pd);
+
+        super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.AGENT_HAS_LIST_@@TEMPLATECODE@@);
+    }
+
+    @Override
+    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) {
+        ComponentValidateResult result = super.validateStoreStaffCommunityRelationship(pd, restTemplate);
+
+        Map paramMap = BeanConvertUtil.beanCovertMap(result);
+        paramIn.putAll(paramMap);
+
+        String apiUrl = ServiceConstant.SERVICE_API_URL + "/api/@@templateCode@@.list@@TemplateCode@@s" + mapToUrlParam(paramIn);
+
+
+        ResponseEntity<String> responseEntity = this.callCenterService(restTemplate, pd, "",
+                apiUrl,
+                HttpMethod.GET);
+
+        return responseEntity;
+    }
+
+    public RestTemplate getRestTemplate() {
+        return restTemplate;
+    }
+
+    public void setRestTemplate(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+}

+ 40 - 0
java110-code-generator/src/main/resources/web/manage/ManageComponent.java

@@ -0,0 +1,40 @@
+package com.java110.web.components.community;
+
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.community.I@@TemplateCode@@ManageSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * @@templateName@@组件管理类
+ *
+ * add by wuxw
+ *
+ * 2019-06-29
+ */
+@Component("@@templateCode@@Manage")
+public class @@TemplateCode@@ManageComponent {
+
+    @Autowired
+    private IList@@TemplateCode@@sSMO list@@TemplateCode@@sSMOImpl;
+
+    /**
+     * 查询@@templateName@@列表
+     * @param pd 页面数据封装
+     * @return 返回 ResponseEntity 对象
+     */
+    public ResponseEntity<String> list(IPageData pd){
+        return list@@TemplateCode@@sSMOImpl.list@@TemplateCode@@s(pd);
+    }
+
+    public I@@TemplateCode@@ManageSMO getList@@TemplateCode@@sSMOImpl() {
+        return list@@TemplateCode@@sSMOImpl;
+    }
+
+    public void setList@@TemplateCode@@sSMOImpl(IList@@TemplateCode@@sSMO list@@TemplateCode@@sSMOImpl) {
+        this.list@@TemplateCode@@sSMOImpl = list@@TemplateCode@@sSMOImpl;
+    }
+}

+ 47 - 0
java110-code-generator/src/main/resources/web/manage/manage.html

@@ -0,0 +1,47 @@
+<div id="component" class="wrapper wrapper-content animated fadeInRight ecommerce">
+    <div class="row">
+        <div class="col-lg-12">
+            <div class="ibox">
+                <div class="ibox-title">
+                    <h5>@@templateName@@信息</h5>
+                    <div class="ibox-tools" style="top:10px;">
+                        <button type="button" class="btn btn-primary btn-sm" v-on:click="_openAdd@@TemplateCode@@Modal()">
+                            <i class="glyphicon glyphicon-plus"></i>
+                            添加@@templateName@@
+                        </button>
+                    </div>
+                </div>
+                <div class="ibox-content">
+
+                    <table class="footable table table-stripped toggle-arrow-tiny" data-page-size="15">
+                        <thead>
+                        <tr>
+                            @@columnsCnCode@@
+
+                        </tr>
+                        </thead>
+                        <tbody>
+                            <tr v-for="@@templateCode@@ in @@templateCode@@ManageInfo.@@templateCode@@s">
+                                @@columnsName@@
+                            </tr>
+                        </tbody>
+                        <tfoot>
+                        <tr>
+                            <td colspan="7">
+                                <ul class="pagination float-right"></ul>
+                            </td>
+                        </tr>
+                        </tfoot>
+                    </table>
+                    <!-- 分页 -->
+                    <vc:create name="pagination"></vc:create>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <vc:create name="add@@TemplateCode@@"></vc:create>
+    <vc:create name="edit@@TemplateCode@@"></vc:create>
+    <vc:create name="delete@@TemplateCode@@"></vc:create>
+
+</div>

+ 60 - 0
java110-code-generator/src/main/resources/web/manage/manage.js

@@ -0,0 +1,60 @@
+/**
+    入驻小区
+**/
+(function(vc){
+    var DEFAULT_PAGE = 1;
+    var DEFAULT_ROWS = 10;
+    vc.extends({
+        data:{
+            @@templateCode@@ManageInfo:{
+                @@templateCode@@s:[],
+                total:0,
+                records:1
+            }
+        },
+        _initMethod:function(){
+            vc.component.list@@TemplateCode@@(DEFAULT_PAGE, DEFAULT_ROWS);
+        },
+        _initEvent:function(){
+            vc.on('@@templateCode@@Manage','list@@TemplateCode@@',function(_param){
+                  vc.component._list@@TemplateCode@@s(DEFAULT_PAGE, DEFAULT_ROWS);
+            });
+             vc.on('pagination','page_event',function(_currentPage){
+                vc.component._list@@TemplateCode@@s(_currentPage,DEFAULT_ROWS);
+            });
+        },
+        methods:{
+            _list@@TemplateCode@@s:function(_page, _rows){
+                var param = {
+                    params:{
+                        page:_page,
+                        row:_rows
+                    }
+
+               }
+               //发送get请求
+               vc.http.get('@@templateCode@@Manage',
+                            'list',
+                             param,
+                             function(json,res){
+                                var _@@templateCode@@ManageInfo=JSON.parse(json);
+                                vc.component.@@templateCode@@ManageInfo.total = _@@templateCode@@ManageInfo.total;
+                                vc.component.@@templateCode@@ManageInfo.records = _@@templateCode@@ManageInfo.records;
+                                vc.component.@@templateCode@@ManageInfo.@@templateCode@@s = _@@templateCode@@ManageInfo.@@templateCode@@s;
+                             },function(errInfo,error){
+                                console.log('请求失败处理');
+                             }
+                           );
+            },
+            _openAdd@@TemplateCode@@Modal:function(){
+                vc.emit('add@@TemplateCode@@','openAdd@@TemplateCode@@',{});
+            },
+            _openEdit@@TemplateCode@@Model:function(_@@templateCode@@){
+                vc.emit('edit@@TemplateCode@@','openEdit@@TemplateCode@@Modal',_@@templateCode@@);
+            },
+            _openDelete@@TemplateCode@@Model:function(_@@templateCode@@){
+                vc.emit('delete@@TemplateCode@@','openDelete@@TemplateCode@@Modal',_@@templateCode@@);
+            }
+        }
+    });
+})(window.vc);

+ 79 - 0
java110-code-generator/src/main/resources/web/template_1.json

@@ -0,0 +1,79 @@
+{
+  "templateName":"小区",
+  "templateCode":"community",
+  "templateKey":"communityId",
+  "templateKeyName":"小区ID",
+  "columns":[
+    {
+      "code":"name",
+      "cnCode":"小区名称",
+      "desc":"必填,请填写小区名称",
+      "required":true,
+      "hasDefaultValue":false,
+      "inputType":"input",
+      "limit":"maxin",
+      "limitParam":"10,20",
+      "limitErrInfo":"小区名称必须在10至20字符之间"
+    },
+    {
+      "code":"address",
+      "cnCode":"小区地址",
+      "desc":"必填,请填写小区地址",
+      "required":true,
+      "hasDefaultValue":false,
+      "inputType":"input",
+      "limit":"maxin",
+      "limitParam":"50",
+      "limitErrInfo":"小区地址不能大于50个字符"
+    },
+    {
+      "code":"nearbyLandmarks",
+      "cnCode":"附近地标",
+      "desc":"必填,请填写小区附近地标",
+      "required":true,
+      "hasDefaultValue":false,
+      "inputType":"input",
+      "limit":"maxin",
+      "limitParam":"50",
+      "limitErrInfo":"小区附近地标不能大于50个字符"
+    },
+    {
+      "code":"cityCode",
+      "cnCode":"城市编码",
+      "desc":"",
+      "required":false,
+      "hasDefaultValue":true,
+      "defaultValue":"0971",
+      "inputType":"none",
+      "limit":"maxin",
+      "limitParam":"12",
+      "limitErrInfo":"小区城市编码不能大于4个字符"
+    },
+    {
+      "code":"mapX",
+      "cnCode":"小区维度",
+      "desc":"",
+      "required":false,
+      "hasDefaultValue":true,
+      "defaultValue":"101.33",
+      "inputType":"none",
+      "limit":"maxin",
+      "limitParam":"20",
+      "limitErrInfo":"小区城市编码不能大于4个字符"
+    },
+    {
+      "code":"mapY",
+      "cnCode":"小区经度",
+      "desc":"",
+      "required":false,
+      "hasDefaultValue":true,
+      "defaultValue":"101.33",
+      "inputType":"none",
+      "limit":"maxin",
+      "limitParam":"20",
+      "limitErrInfo":"小区城市编码不能大于4个字符"
+    }
+
+
+  ]
+}