wuxw
2019-08-10 9df40dad0fd0f52f108b598ac78b3bbff5eda1f9
加入 服务绑定扩展信息
5个文件已修改
3个文件已添加
559 ■■■■ 已修改文件
Api/src/main/java/com/java110/api/listener/menu/QueryMenuServiceListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/service/BindingServiceListener.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebService/src/main/resources/components/servicePackage/addRouteView/addRouteView.html 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebService/src/main/resources/components/servicePackage/addRouteView/addRouteView.js 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebService/src/main/resources/components/servicePackage/service-binding/serviceBinding.html 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebService/src/main/resources/components/servicePackage/service-binding/serviceBinding.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-code-generator/src/main/resources/relationship/template_1.json 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-code-generator/src/main/resources/relationship/template_room.json 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/menu/QueryMenuServiceListener.java
@@ -154,7 +154,7 @@
            childMenu.put("name", tMenu.getString("menuName"));
            childMenu.put("href", tMenu.getString("url"));
            childMenu.put("seq", tMenu.getString("menuSeq"));
            childMenu.put("seq", tMenu.getString("isShow"));
            childMenu.put("isShow", tMenu.getString("isShow"));
            childs.add(childMenu);
        }
        return new ResponseEntity<String>(tempMenus.toJSONString(), HttpStatus.OK);
Api/src/main/java/com/java110/api/listener/service/BindingServiceListener.java
@@ -4,11 +4,13 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.listener.AbstractServiceApiListener;
import com.java110.common.constant.CommonConstant;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.constant.ServiceCodeServiceConstant;
import com.java110.common.exception.ListenerExecuteException;
import com.java110.common.util.Assert;
import com.java110.common.util.BeanConvertUtil;
import com.java110.common.util.StringUtil;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.core.factory.GenerateCodeFactory;
@@ -45,8 +47,12 @@
        JSONArray infos = reqJson.getJSONArray("data");
        if(infos == null || infos.size() !=2){
            throw new IllegalArgumentException("请求参数错误,为包含 应用或服务信息");
        Assert.hasKeyByFlowData(infos, "addRouteView", "orderTypeCd", "必填,请填写订单类型");
        Assert.hasKeyByFlowData(infos, "addRouteView", "invokeLimitTimes", "必填,请填写调用次数");
        Assert.hasKeyByFlowData(infos, "addRouteView", "invokeModel", "可填,请填写消息队列,订单在异步调用时使用");
        if(infos == null || infos.size() !=3){
            throw new IllegalArgumentException("请求参数错误,为包含 应用,服务或扩展信息");
        }
    }
@@ -55,47 +61,30 @@
        JSONArray infos = reqJson.getJSONArray("data");
        JSONObject appInfo = null; //应用信息
        JSONObject serviceInfo = null; // 服务信息
        JSONObject viewAppInfo = getObj(infos, "App");
        JSONObject viewServiceInfo = getObj(infos, "Service");
        JSONObject addRouteView = getObj(infos, "addRouteView");
        for(int infoIndex = 0 ; infoIndex < infos.size(); infoIndex ++){
            Assert.hasKeyAndValue(infos.getJSONObject(infoIndex), "flowComponent", "未包含服务流程组件名称");
            if("App".equals(infos.getJSONObject(infoIndex).getString("flowComponent"))){
                appInfo = infos.getJSONObject(infoIndex);
            }
            if("Service".equals(infos.getJSONObject(infoIndex).getString("flowComponent"))){
                serviceInfo = infos.getJSONObject(infoIndex);
            }
        }
        Assert.notNull(appInfo, "未包含应用信息");
        Assert.notNull(serviceInfo, "未包含服务信息");
        Assert.notNull(viewAppInfo, "未包含应用信息");
        Assert.notNull(viewServiceInfo, "未包含服务信息");
        Assert.notNull(addRouteView, "未包含扩展信息");
        //处理 应用信息
        if(!appInfo.containsKey("appId")
                || StringUtils.isEmpty(appInfo.getString("appId"))
                || appInfo.getString("appId").startsWith("-")){
            appInfo.put("appId", saveAppInfo(reqJson, appInfo));
        if(!hasKey(viewAppInfo, "appId")){
            viewAppInfo.put("appId", saveAppInfo(reqJson, viewAppInfo));
        }
        //处理 服务信息
        if(!serviceInfo.containsKey("serviceId")
                || StringUtils.isEmpty(serviceInfo.getString("serviceId"))
                || serviceInfo.getString("serviceId").startsWith("-")){
            serviceInfo.put("serviceId", saveServiceInfo(reqJson, serviceInfo));
        if(!hasKey(viewServiceInfo, "serviceId")){
            viewServiceInfo.put("serviceId", saveServiceInfo(reqJson, viewServiceInfo));
        }
        //处理路由信息
        RouteDto routeDto = new RouteDto();
        routeDto.setAppId(appInfo.getString("appId"));
        routeDto.setServiceId(serviceInfo.getString("serviceId"));
        routeDto.setInvokeLimitTimes("1000");
        routeDto.setInvokeModel("S");
        routeDto.setOrderTypeCd("Q");
        RouteDto routeDto = BeanConvertUtil.covertBean(addRouteView, RouteDto.class);
        routeDto.setAppId(viewAppInfo.getString("appId"));
        routeDto.setServiceId(viewServiceInfo.getString("serviceId"));
        int count = routeInnerServiceSMOImpl.saveRoute(routeDto);
@@ -156,6 +145,35 @@
        return serviceDto.getServiceId();
    }
    private JSONObject getObj(JSONArray infos , String flowComponent){
        JSONObject serviceInfo = null;
        for(int infoIndex = 0 ; infoIndex < infos.size(); infoIndex ++){
            Assert.hasKeyAndValue(infos.getJSONObject(infoIndex), "flowComponent", "未包含服务流程组件名称");
            if(flowComponent.equals(infos.getJSONObject(infoIndex).getString("flowComponent"))){
                serviceInfo = infos.getJSONObject(infoIndex);
                Assert.notNull(serviceInfo, "未包含服务信息");
                return serviceInfo;
            }
        }
        throw new IllegalArgumentException("未找到组件编码为【" + flowComponent + "】数据");
    }
    private boolean hasKey(JSONObject info, String key){
        if(!info.containsKey(key)
                || StringUtil.isEmpty(info.getString(key))
                || info.getString(key).startsWith("-")){
            return false;
        }
        return true;
    }
    @Override
    public String getServiceCode() {
        return ServiceCodeServiceConstant.BINDING_SERVICE;
WebService/src/main/resources/components/servicePackage/addRouteView/addRouteView.html
New file
@@ -0,0 +1,40 @@
<div class="row">
    <div class="col-lg-12">
        <div class="ibox">
            <div class="ibox-title">
                <h5>服务绑定</h5>
                <div class="ibox-tools" style="top:10px;">
                </div>
            </div>
            <div class="ibox-content">
                <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="addRouteViewInfo.orderTypeCd">
         <option selected  disabled value="">必填,请选择订单类型</option>
         <option  value="Q">查询</option>
<option  value="D">业务受理</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="addRouteViewInfo.invokeLimitTimes"                   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">
<select class="custom-select" v-model="addRouteViewInfo.invokeModel">
         <option selected  disabled value="">必填,请选择调用方式</option>
         <option  value="S">同步方式</option>
<option  value="A">异步方式</option>
  </select>         </div>
</div>
            </div>
        </div>
    </div>
</div>
WebService/src/main/resources/components/servicePackage/addRouteView/addRouteView.js
New file
@@ -0,0 +1,88 @@
(function(vc){
    vc.extends({
        propTypes: {
           callBackListener:vc.propTypes.string, //父组件名称
           callBackFunction:vc.propTypes.string //父组件监听方法
        },
        data:{
            addRouteViewInfo:{
                flowComponent:'addRouteView',
                orderTypeCd:'',
invokeLimitTimes:'1000',
invokeModel:'',
            }
        },
        watch:{
            addRouteViewInfo:{
                deep: true,
                handler:function(){
                    vc.component.saveAddRouteInfo();
                }
             }
        },
         _initMethod:function(){
         },
         _initEvent:function(){
            vc.on('addRouteViewInfo', 'onIndex', function(_index){
                vc.component.addRouteViewInfo.index = _index;
            });
        },
        methods:{
            addRouteValidate(){
                return vc.validate.validate({
                    addRouteViewInfo:vc.component.addRouteViewInfo
                },{
                    'addRouteViewInfo.orderTypeCd':[
{
                            limit:"required",
                            param:"",
                            errInfo:"订单类型不能为空"
                        },
 {
                            limit:"maxin",
                            param:"1,4",
                            errInfo:"订单类型错误"
                        },
                    ],
'addRouteViewInfo.invokeLimitTimes':[
{
                            limit:"required",
                            param:"",
                            errInfo:"调用次数不能为空"
                        },
 {
                            limit:"num",
                            param:"",
                            errInfo:"调用次数错误"
                        },
                    ],
'addRouteViewInfo.invokeModel':[
{
                            limit:"required",
                            param:"",
                            errInfo:"调用方式不能为空"
                        },
 {
                            limit:"maxLength",
                            param:"50",
                            errInfo:"消息队列不能超过50"
                        },
                    ],
                });
            },
            saveAddRouteInfo:function(){
                if(vc.component.addRouteValidate()){
                    //侦听回传
                    vc.emit($props.callBackListener,$props.callBackFunction, vc.component.addRouteViewInfo);
                    return ;
                }
            }
        }
    });
})(window.vc);
WebService/src/main/resources/components/servicePackage/service-binding/serviceBinding.html
@@ -5,20 +5,24 @@
    </div>
    <!-- 选择 应用信息 -->
    <div v-if="serviceBindingInfo.index == 0 || serviceBindingInfo.index == 2">
    <div v-if="serviceBindingInfo.index == 0">
        <vc:create name="viewAppInfo"
                   callBackListener="serviceBinding"
                   callBackFunction="notify"
        ></vc:create>
    </div>
    <!-- 选择 应用信息 -->
    <div v-if="serviceBindingInfo.index == 1 || serviceBindingInfo.index == 2">
    <div v-if="serviceBindingInfo.index == 1">
        <vc:create name="viewServiceInfo"
                   callBackListener="serviceBinding"
                   callBackFunction="notify"
        ></vc:create>
    </div>
    <div v-if="serviceBindingInfo.index == 2">
        <vc:create name="addRouteView"
                   callBackListener="serviceBinding"
                   callBackFunction="notify"
        ></vc:create>
    </div>
WebService/src/main/resources/components/servicePackage/service-binding/serviceBinding.js
@@ -2,8 +2,6 @@
    入驻小区
**/
(function(vc){
    var DEFAULT_PAGE = 1;
    var DEFAULT_ROWS = 10;
    vc.extends({
        data:{
            serviceBindingInfo:{
@@ -27,7 +25,7 @@
                vc.component.serviceBindingInfo.$step.step({
                    index: 0,
                    time: 500,
                    title: ["选择应用", "选择服务", "确认绑定"]
                    title: ["选择应用","选择服务","扩展信息"]
                });
                vc.component.serviceBindingInfo.index = vc.component.serviceBindingInfo.$step.getIndex();
            },
@@ -35,31 +33,40 @@
                vc.component.serviceBindingInfo.$step.prevStep();
                vc.component.serviceBindingInfo.index = vc.component.serviceBindingInfo.$step.getIndex();
                 vc.emit('viewAppInfo', 'onIndex', vc.component.serviceBindingInfo.index);
                 vc.emit('viewServiceInfo', 'onIndex', vc.component.serviceBindingInfo.index);
                vc.emit('viewAppInfo', 'onIndex', vc.component.serviceBindingInfo.index);
vc.emit('viewServiceInfo', 'onIndex', vc.component.serviceBindingInfo.index);
vc.emit('addRouteView', 'onIndex', vc.component.serviceBindingInfo.index);
            },
            _nextStep:function(){
                var _currentData = vc.component.serviceBindingInfo.infos[vc.component.serviceBindingInfo.index];
                if( _currentData == null || _currentData == undefined){
                    vc.message("请选择相关信息");
                    vc.message("请选择或填写必选信息");
                    return ;
                }
                vc.component.serviceBindingInfo.$step.nextStep();
                vc.component.serviceBindingInfo.index = vc.component.serviceBindingInfo.$step.getIndex();
                vc.emit('viewAppInfo', 'onIndex', vc.component.serviceBindingInfo.index);
                vc.emit('viewServiceInfo', 'onIndex', vc.component.serviceBindingInfo.index);
                 vc.emit('viewAppInfo', 'onIndex', vc.component.serviceBindingInfo.index);
vc.emit('viewServiceInfo', 'onIndex', vc.component.serviceBindingInfo.index);
vc.emit('addRouteView', 'onIndex', vc.component.serviceBindingInfo.index);
            },
            _finishStep:function(){
                var _currentData = vc.component.serviceBindingInfo.infos[vc.component.serviceBindingInfo.index];
                if( _currentData == null || _currentData == undefined){
                    vc.message("请选择或填写必选信息");
                    return ;
                }
                var param = {
                    data:vc.component.serviceBindingInfo.infos
                }
               vc.http.post(
                   'serviceBinding',
                   'serviceBindingBinding',
                   'binding',
                   JSON.stringify(param),
                   {
@@ -67,10 +74,10 @@
                    },
                    function(json,res){
                       if(res.status == 200){
                           vc.message('处理成功',true);
                           var _jInfo = JSON.parse(json);
                           //关闭model
                           vc.jumpToPage("/flow/serviceFlow?" + vc.objToGetParam(_jInfo));
                           vc.jumpToPage("/flow/serviceRegisterFlow?" + vc.objToGetParam(JSON.parse(json)));
                           return ;
                       }
                       vc.message(json);
@@ -83,4 +90,4 @@
            }
        }
    });
})(window.vc);
})(window.vc);
java110-code-generator/src/main/resources/relationship/template_1.json
@@ -1,140 +1,90 @@
{
  "templateName":"添加房屋",
  "templateCode":"addRoomBinding",
  "templateKey":"roomId",
  "templateKeyName":"房屋ID",
  "package": "roomPackage",
  "successUrl": "/",
  "templateName":"服务绑定",
  "templateCode":"serviceBinding",
  "templateKey":"id",
  "templateKeyName":"绑定ID",
  "package": "servicePackage",
  "successUrl": "/flow/serviceRegisterFlow",
  "needAffirm": false,
  "flows":[
    {
      "index": 0,
      "code":"floor",
      "flowKey": "floorId",
      "cnCode":"选择楼",
      "vcName":"viewFloorInfo",
      "businessName": "businessFloor",
      "businessType": "BUSINESS_TYPE_SAVE_FLOOR_INFO",
      "code":"app",
      "flowKey": "appId",
      "cnCode":"选择应用",
      "vcName":"viewAppInfo",
      "businessName": "businessApp",
      "businessType": "BUSINESS_TYPE_SAVE_APP_INFO",
      "existsComponent": true
    },
    {
      "index": 1,
      "code":"unit",
      "flowKey": "unitId",
      "cnCode":"选择单元",
      "vcName":"viewUnitInfo",
      "businessName": "businessUnit",
      "businessType": "BUSINESS_TYPE_SAVE_UNIT_INFO",
      "code":"service",
      "flowKey": "serviceId",
      "cnCode":"选择服务",
      "vcName":"viewServiceInfo",
      "businessName": "businessService",
      "businessType": "BUSINESS_TYPE_SAVE_SERVICE_INFO",
      "existsComponent": true
    },
    {
      "index": 2,
      "code":"room",
      "flowKey": "roomId",
      "cnCode":"添加房屋",
      "vcName":"addRoomView",
      "businessName": "businessRoom",
      "businessType": "BUSINESS_TYPE_SAVE_ROOM_INFO",
      "code":"route",
      "flowKey": "id",
      "cnCode":"扩展信息",
      "vcName":"addRouteView",
      "businessName": "businessRoute",
      "businessType": "BUSINESS_TYPE_SAVE_ROUTE_INFO",
      "existsComponent": false
    }
  ],
  "components": {
      "addRoomView": {
        "templateName":"添加房屋",
        "templateCode":"addRoom",
        "package": "roomPackage",
      "addRouteView": {
        "templateName":"扩展信息",
        "templateCode":"addRoute",
        "package": "servicePackage",
        "columns":[
          {
            "code":"roomNum",
            "cnCode":"房屋编号",
            "desc":"必填,请填写房屋编号",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"input",
            "limit":"maxLength",
            "limitParam":"12",
            "limitErrInfo":"房屋编号长度不能超过12位"
          },
          {
            "code":"layer",
            "cnCode":"房屋楼层",
            "desc":"必填,请填写房屋楼层",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"input",
            "limit":"num",
            "limitParam":"",
            "limitErrInfo":"房屋楼层高度必须为数字"
          },
          {
            "code":"section",
            "cnCode":"房间数",
            "desc":"必填,请填写房屋楼层",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"input",
            "limit":"num",
            "limitParam":"",
            "limitErrInfo":"房间数必须为数字"
          },
          {
            "code":"apartment",
            "cnCode":"房屋户型",
            "desc":"必填,请选择房屋户型",
            "code":"orderTypeCd",
            "cnCode":"订单类型",
            "desc":"必填,请填写订单类型",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"select",
            "selectValue":"一室两厅,两室两厅",
            "selectValueName":"1010,2020",
            "limit":"maxLength",
            "limitParam":"50",
            "limitErrInfo":"房屋户型不能大于50"
            "selectValue":"Q,D",
            "selectValueName":"查询,业务受理",
            "limit":"maxin",
            "limitParam":"1,4",
            "limitErrInfo":"订单类型错误",
            "show": true
          },
          {
            "code":"builtUpArea",
            "cnCode":"建筑面积",
            "desc":"必填,请填写房屋建筑面积",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"input",
            "limit":"money",
            "limitParam":"",
            "limitErrInfo":"建筑面积错误,如 300.00"
          },
          {
            "code":"unitPrice",
            "cnCode":"房屋单价",
            "desc":"必填,请填写房屋每平米单价",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"input",
            "limit":"money",
            "limitParam":"",
            "limitErrInfo":"房屋单价错误 如 300.00"
          },
          {
            "code":"state",
            "cnCode":"房屋状态",
            "desc":"必填,请选择房屋状态",
            "code":"invokeLimitTimes",
            "cnCode":"调用次数",
            "desc":"必填,请填写调用次数",
            "required":true,
            "hasDefaultValue":true,
            "defaultValue":"2002",
            "inputType":"none",
            "limit":"maxLength",
            "limitParam":"12",
            "limitErrInfo":"房屋状态 不能超过12位"
            "defaultValue":"1000",
            "inputType":"input",
            "limit":"num",
            "limitParam":"",
            "limitErrInfo":"调用次数错误",
            "show": false
          },
          {
            "code":"remark",
            "cnCode":"备注",
            "desc":"可填,请填写备注",
            "required":false,
            "code":"invokeModel",
            "cnCode":"调用方式",
            "desc":"可填,请填写消息队列,订单在异步调用时使用",
            "required":true,
            "hasDefaultValue":false,
            "defaultValue":"",
            "inputType":"textarea",
            "inputType":"select",
            "selectValue":"S,A",
            "selectValueName":"同步方式,异步方式",
            "limit":"maxLength",
            "limitParam":"200",
            "limitErrInfo":"备注内容不能超过200"
            "limitParam":"50",
            "limitErrInfo":"消息队列不能超过50",
            "show": false
          }
        ]
      }
java110-code-generator/src/main/resources/relationship/template_room.json
New file
@@ -0,0 +1,142 @@
{
  "templateName":"添加房屋",
  "templateCode":"addRoomBinding",
  "templateKey":"roomId",
  "templateKeyName":"房屋ID",
  "package": "roomPackage",
  "successUrl": "/",
  "needAffirm": false,
  "flows":[
    {
      "index": 0,
      "code":"floor",
      "flowKey": "floorId",
      "cnCode":"选择楼",
      "vcName":"viewFloorInfo",
      "businessName": "businessFloor",
      "businessType": "BUSINESS_TYPE_SAVE_FLOOR_INFO",
      "existsComponent": true
    },
    {
      "index": 1,
      "code":"unit",
      "flowKey": "unitId",
      "cnCode":"选择单元",
      "vcName":"viewUnitInfo",
      "businessName": "businessUnit",
      "businessType": "BUSINESS_TYPE_SAVE_UNIT_INFO",
      "existsComponent": true
    },
    {
      "index": 2,
      "code":"room",
      "flowKey": "roomId",
      "cnCode":"添加房屋",
      "vcName":"addRoomView",
      "businessName": "businessRoom",
      "businessType": "BUSINESS_TYPE_SAVE_ROOM_INFO",
      "existsComponent": false
    }
  ],
  "components": {
      "addRoomView": {
        "templateName":"添加房屋",
        "templateCode":"addRoom",
        "package": "roomPackage",
        "columns":[
          {
            "code":"roomNum",
            "cnCode":"房屋编号",
            "desc":"必填,请填写房屋编号",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"input",
            "limit":"maxLength",
            "limitParam":"12",
            "limitErrInfo":"房屋编号长度不能超过12位"
          },
          {
            "code":"layer",
            "cnCode":"房屋楼层",
            "desc":"必填,请填写房屋楼层",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"input",
            "limit":"num",
            "limitParam":"",
            "limitErrInfo":"房屋楼层高度必须为数字"
          },
          {
            "code":"section",
            "cnCode":"房间数",
            "desc":"必填,请填写房屋楼层",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"input",
            "limit":"num",
            "limitParam":"",
            "limitErrInfo":"房间数必须为数字"
          },
          {
            "code":"apartment",
            "cnCode":"房屋户型",
            "desc":"必填,请选择房屋户型",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"select",
            "selectValue":"一室两厅,两室两厅",
            "selectValueName":"1010,2020",
            "limit":"maxLength",
            "limitParam":"50",
            "limitErrInfo":"房屋户型不能大于50"
          },
          {
            "code":"builtUpArea",
            "cnCode":"建筑面积",
            "desc":"必填,请填写房屋建筑面积",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"input",
            "limit":"money",
            "limitParam":"",
            "limitErrInfo":"建筑面积错误,如 300.00"
          },
          {
            "code":"unitPrice",
            "cnCode":"房屋单价",
            "desc":"必填,请填写房屋每平米单价",
            "required":true,
            "hasDefaultValue":false,
            "inputType":"input",
            "limit":"money",
            "limitParam":"",
            "limitErrInfo":"房屋单价错误 如 300.00"
          },
          {
            "code":"state",
            "cnCode":"房屋状态",
            "desc":"必填,请选择房屋状态",
            "required":true,
            "hasDefaultValue":true,
            "defaultValue":"2002",
            "inputType":"none",
            "limit":"maxLength",
            "limitParam":"12",
            "limitErrInfo":"房屋状态 不能超过12位"
          },
          {
            "code":"remark",
            "cnCode":"备注",
            "desc":"可填,请填写备注",
            "required":false,
            "hasDefaultValue":false,
            "defaultValue":"",
            "inputType":"textarea",
            "limit":"maxLength",
            "limitParam":"200",
            "limitErrInfo":"备注内容不能超过200"
          }
        ]
      }
  }
}