Преглед на файлове

设备代码生成完成

wuxw преди 6 години
родител
ревизия
f00566747d
променени са 36 файла, в които са добавени 2143 реда и са изтрити 70 реда
  1. 6 0
      Api/pom.xml
  2. 91 0
      Api/src/main/java/com/java110/api/listener/machine/DeleteMachineListener.java
  3. 88 0
      Api/src/main/java/com/java110/api/listener/machine/ListMachinesListener.java
  4. 99 0
      Api/src/main/java/com/java110/api/listener/machine/SaveMachineListener.java
  5. 95 0
      Api/src/main/java/com/java110/api/listener/machine/UpdateMachineListener.java
  6. 34 0
      WebService/src/main/java/com/java110/web/components/machine/AddMachineComponent.java
  7. 41 0
      WebService/src/main/java/com/java110/web/components/machine/ChooseMachineComponent.java
  8. 34 0
      WebService/src/main/java/com/java110/web/components/machine/DeleteMachineComponent.java
  9. 34 0
      WebService/src/main/java/com/java110/web/components/machine/EditMachineComponent.java
  10. 41 0
      WebService/src/main/java/com/java110/web/components/machine/MachineManageComponent.java
  11. 19 0
      WebService/src/main/java/com/java110/web/smo/machine/IAddMachineSMO.java
  12. 19 0
      WebService/src/main/java/com/java110/web/smo/machine/IDeleteMachineSMO.java
  13. 19 0
      WebService/src/main/java/com/java110/web/smo/machine/IEditMachineSMO.java
  14. 22 0
      WebService/src/main/java/com/java110/web/smo/machine/IListMachinesSMO.java
  15. 67 0
      WebService/src/main/java/com/java110/web/smo/machine/impl/AddMachineSMOImpl.java
  16. 64 0
      WebService/src/main/java/com/java110/web/smo/machine/impl/DeleteMachineSMOImpl.java
  17. 66 0
      WebService/src/main/java/com/java110/web/smo/machine/impl/EditMachineSMOImpl.java
  18. 66 0
      WebService/src/main/java/com/java110/web/smo/machine/impl/ListMachinesSMOImpl.java
  19. 89 0
      WebService/src/main/resources/components/machinePackage/add-machine/addMachine.html
  20. 160 0
      WebService/src/main/resources/components/machinePackage/add-machine/addMachine.js
  21. 68 0
      WebService/src/main/resources/components/machinePackage/choose-machine/chooseMachine.html
  22. 64 0
      WebService/src/main/resources/components/machinePackage/choose-machine/chooseMachine.js
  23. 19 0
      WebService/src/main/resources/components/machinePackage/delete-machine/deleteMachine.html
  24. 52 0
      WebService/src/main/resources/components/machinePackage/delete-machine/deleteMachine.js
  25. 76 0
      WebService/src/main/resources/components/machinePackage/edit-machine/editMachine.html
  26. 156 0
      WebService/src/main/resources/components/machinePackage/edit-machine/editMachine.js
  27. 116 0
      WebService/src/main/resources/components/machinePackage/machine-manage/machineManage.html
  28. 88 0
      WebService/src/main/resources/components/machinePackage/machine-manage/machineManage.js
  29. 78 0
      WebService/src/main/resources/components/machinePackage/view-machine-info/viewMachineInfo.html
  30. 54 0
      WebService/src/main/resources/components/machinePackage/view-machine-info/viewMachineInfo.js
  31. 36 0
      WebService/src/main/resources/views/machineFlow.html
  32. 67 0
      java110-bean/src/main/java/com/java110/vo/api/machine/ApiMachineDataVo.java
  33. 19 0
      java110-bean/src/main/java/com/java110/vo/api/machine/ApiMachineVo.java
  34. 62 70
      java110-code-generator/src/main/resources/web/template_1.json
  35. 3 0
      java110-utils/src/main/java/com/java110/utils/constant/PrivilegeCodeConstant.java
  36. 31 0
      java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeMachineConstant.java

+ 6 - 0
Api/pom.xml

@@ -52,6 +52,12 @@
             <version>4.11</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>com.vaadin.external.google</groupId>
+            <artifactId>android-json</artifactId>
+            <version>0.0.20131108.vaadin1</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 91 - 0
Api/src/main/java/com/java110/api/listener/machine/DeleteMachineListener.java

@@ -0,0 +1,91 @@
+package com.java110.api.listener.machine;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.entity.center.AppService;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.constant.ServiceCodeMachineConstant;
+import com.java110.utils.util.Assert;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 保存小区侦听
+ * add by wuxw 2019-06-30
+ */
+@Java110Listener("deleteMachineListener")
+public class DeleteMachineListener extends AbstractServiceApiListener {
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
+
+        Assert.hasKeyAndValue(reqJson, "machineId", "设备ID不能为空");
+
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+        HttpHeaders header = new HttpHeaders();
+        context.getRequestCurrentHeaders().put(CommonConstant.HTTP_ORDER_TYPE_CD, "D");
+        JSONArray businesses = new JSONArray();
+
+        AppService service = event.getAppService();
+
+        //添加单元信息
+        businesses.add(deleteMachine(reqJson, context));
+
+        JSONObject paramInObj = super.restToCenterProtocol(businesses, context.getRequestCurrentHeaders());
+
+        //将 rest header 信息传递到下层服务中去
+        super.freshHttpHeader(header, context.getRequestCurrentHeaders());
+
+        ResponseEntity<String> responseEntity = this.callService(context, service.getServiceCode(), paramInObj);
+
+        context.setResponseEntity(responseEntity);
+    }
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeMachineConstant.DELETE_MACHINE;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.POST;
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+
+    /**
+     * 添加小区信息
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @param dataFlowContext 数据上下文
+     * @return 订单服务能够接受的报文
+     */
+    private JSONObject deleteMachine(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_DELETE_MACHINE);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessMachine = new JSONObject();
+        businessMachine.putAll(paramInJson);
+        //计算 应收金额
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessMachine", businessMachine);
+        return business;
+    }
+
+}

+ 88 - 0
Api/src/main/java/com/java110/api/listener/machine/ListMachinesListener.java

@@ -0,0 +1,88 @@
+package com.java110.api.listener.machine;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.smo.hardwareAdapation.IMachineInnerServiceSMO;
+import com.java110.dto.hardwareAdapation.MachineDto;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.utils.constant.ServiceCodeMachineConstant;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.api.machine.ApiMachineDataVo;
+import com.java110.vo.api.machine.ApiMachineVo;
+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("listMachinesListener")
+public class ListMachinesListener extends AbstractServiceApiListener {
+
+    @Autowired
+    private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeMachineConstant.LIST_MACHINES;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.GET;
+    }
+
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+
+    public IMachineInnerServiceSMO getMachineInnerServiceSMOImpl() {
+        return machineInnerServiceSMOImpl;
+    }
+
+    public void setMachineInnerServiceSMOImpl(IMachineInnerServiceSMO machineInnerServiceSMOImpl) {
+        this.machineInnerServiceSMOImpl = machineInnerServiceSMOImpl;
+    }
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        super.validatePageInfo(reqJson);
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+        MachineDto machineDto = BeanConvertUtil.covertBean(reqJson, MachineDto.class);
+
+        int count = machineInnerServiceSMOImpl.queryMachinesCount(machineDto);
+
+        List<ApiMachineDataVo> machines = null;
+
+        if (count > 0) {
+            machines = BeanConvertUtil.covertBeanList(machineInnerServiceSMOImpl.queryMachines(machineDto), ApiMachineDataVo.class);
+        } else {
+            machines = new ArrayList<>();
+        }
+
+        ApiMachineVo apiMachineVo = new ApiMachineVo();
+
+        apiMachineVo.setTotal(count);
+        apiMachineVo.setRecords((int) Math.ceil((double) count / (double) reqJson.getInteger("row")));
+        apiMachineVo.setMachines(machines);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiMachineVo), HttpStatus.OK);
+
+        context.setResponseEntity(responseEntity);
+
+    }
+}

+ 99 - 0
Api/src/main/java/com/java110/api/listener/machine/SaveMachineListener.java

@@ -0,0 +1,99 @@
+package com.java110.api.listener.machine;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.utils.util.Assert;
+import com.java110.core.context.DataFlowContext;
+import com.java110.entity.center.AppService;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.constant.ServiceCodeConstant;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.ServiceCodeMachineConstant;
+
+
+import com.java110.core.annotation.Java110Listener;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 保存小区侦听
+ * add by wuxw 2019-06-30
+ */
+@Java110Listener("saveMachineListener")
+public class SaveMachineListener extends AbstractServiceApiListener {
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
+
+        Assert.hasKeyAndValue(reqJson, "machineCode", "必填,请填写设备编码");
+        Assert.hasKeyAndValue(reqJson, "machineVersion", "必填,请填写设备版本号");
+        Assert.hasKeyAndValue(reqJson, "machineName", "必填,请填写设备名称");
+        Assert.hasKeyAndValue(reqJson, "machineTypeCd", "必填,请选择设备类型");
+        Assert.hasKeyAndValue(reqJson, "authCode", "必填,请填写鉴权编码");
+
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+        HttpHeaders header = new HttpHeaders();
+        context.getRequestCurrentHeaders().put(CommonConstant.HTTP_ORDER_TYPE_CD, "D");
+        JSONArray businesses = new JSONArray();
+
+        AppService service = event.getAppService();
+
+        //添加单元信息
+        businesses.add(addMachine(reqJson, context));
+
+        JSONObject paramInObj = super.restToCenterProtocol(businesses, context.getRequestCurrentHeaders());
+
+        //将 rest header 信息传递到下层服务中去
+        super.freshHttpHeader(header, context.getRequestCurrentHeaders());
+
+        ResponseEntity<String> responseEntity = this.callService(context, service.getServiceCode(), paramInObj);
+
+        context.setResponseEntity(responseEntity);
+    }
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeMachineConstant.ADD_MACHINE;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.POST;
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+
+    /**
+     * 添加小区信息
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @param dataFlowContext 数据上下文
+     * @return 订单服务能够接受的报文
+     */
+    private JSONObject addMachine(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_MACHINE);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessMachine = new JSONObject();
+        businessMachine.putAll(paramInJson);
+        businessMachine.put("machineId", "-1");
+        //计算 应收金额
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessMachine", businessMachine);
+        return business;
+    }
+
+}

+ 95 - 0
Api/src/main/java/com/java110/api/listener/machine/UpdateMachineListener.java

@@ -0,0 +1,95 @@
+package com.java110.api.listener.machine;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.entity.center.AppService;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.constant.ServiceCodeMachineConstant;
+import com.java110.utils.util.Assert;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 保存设备侦听
+ * add by wuxw 2019-06-30
+ */
+@Java110Listener("updateMachineListener")
+public class UpdateMachineListener extends AbstractServiceApiListener {
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+
+        Assert.hasKeyAndValue(reqJson, "machineId", "设备ID不能为空");
+        Assert.hasKeyAndValue(reqJson, "machineCode", "必填,请填写设备编码");
+        Assert.hasKeyAndValue(reqJson, "machineVersion", "必填,请填写设备版本号");
+        Assert.hasKeyAndValue(reqJson, "machineName", "必填,请填写设备名称");
+        Assert.hasKeyAndValue(reqJson, "machineTypeCd", "必填,请选择设备类型");
+        Assert.hasKeyAndValue(reqJson, "authCode", "必填,请填写鉴权编码");
+
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+        HttpHeaders header = new HttpHeaders();
+        context.getRequestCurrentHeaders().put(CommonConstant.HTTP_ORDER_TYPE_CD, "D");
+        JSONArray businesses = new JSONArray();
+
+        AppService service = event.getAppService();
+
+        //添加单元信息
+        businesses.add(updateMachine(reqJson, context));
+
+        JSONObject paramInObj = super.restToCenterProtocol(businesses, context.getRequestCurrentHeaders());
+
+        //将 rest header 信息传递到下层服务中去
+        super.freshHttpHeader(header, context.getRequestCurrentHeaders());
+
+        ResponseEntity<String> responseEntity = this.callService(context, service.getServiceCode(), paramInObj);
+
+        context.setResponseEntity(responseEntity);
+    }
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeMachineConstant.UPDATE_MACHINE;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.POST;
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+
+    /**
+     * 添加设备信息
+     *
+     * @param paramInJson     接口调用放传入入参
+     * @param dataFlowContext 数据上下文
+     * @return 订单服务能够接受的报文
+     */
+    private JSONObject updateMachine(JSONObject paramInJson, DataFlowContext dataFlowContext) {
+
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_MACHINE);
+        business.put(CommonConstant.HTTP_SEQ, DEFAULT_SEQ);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL, CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONObject businessMachine = new JSONObject();
+        businessMachine.putAll(paramInJson);
+        //计算 应收金额
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessMachine", businessMachine);
+        return business;
+    }
+
+}

+ 34 - 0
WebService/src/main/java/com/java110/web/components/machine/AddMachineComponent.java

@@ -0,0 +1,34 @@
+package com.java110.web.components.machine;
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.machine.IAddMachineSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * 添加设备组件
+ */
+@Component("addMachine")
+public class AddMachineComponent {
+
+    @Autowired
+    private IAddMachineSMO addMachineSMOImpl;
+
+    /**
+     * 添加设备数据
+     * @param pd 页面数据封装
+     * @return ResponseEntity 对象
+     */
+    public ResponseEntity<String> save(IPageData pd){
+        return addMachineSMOImpl.saveMachine(pd);
+    }
+
+    public IAddMachineSMO getAddMachineSMOImpl() {
+        return addMachineSMOImpl;
+    }
+
+    public void setAddMachineSMOImpl(IAddMachineSMO addMachineSMOImpl) {
+        this.addMachineSMOImpl = addMachineSMOImpl;
+    }
+}

+ 41 - 0
WebService/src/main/java/com/java110/web/components/machine/ChooseMachineComponent.java

@@ -0,0 +1,41 @@
+package com.java110.web.components.machine;
+
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.machine.IListMachinesSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * 应用组件管理类
+ * <p>
+ * add by wuxw
+ * <p>
+ * 2019-06-29
+ */
+@Component("chooseMachine")
+public class ChooseMachineComponent {
+
+    @Autowired
+    private IListMachinesSMO listMachinesSMOImpl;
+
+    /**
+     * 查询应用列表
+     *
+     * @param pd 页面数据封装
+     * @return 返回 ResponseEntity 对象
+     */
+    public ResponseEntity<String> list(IPageData pd) {
+        return listMachinesSMOImpl.listMachines(pd);
+    }
+
+    public IListMachinesSMO getListMachinesSMOImpl() {
+        return listMachinesSMOImpl;
+    }
+
+    public void setListMachinesSMOImpl(IListMachinesSMO listMachinesSMOImpl) {
+        this.listMachinesSMOImpl = listMachinesSMOImpl;
+    }
+}

+ 34 - 0
WebService/src/main/java/com/java110/web/components/machine/DeleteMachineComponent.java

@@ -0,0 +1,34 @@
+package com.java110.web.components.machine;
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.machine.IDeleteMachineSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+        import org.springframework.http.ResponseEntity;
+        import org.springframework.stereotype.Component;
+
+/**
+ * 添加设备组件
+ */
+@Component("deleteMachine")
+public class DeleteMachineComponent {
+
+@Autowired
+private IDeleteMachineSMO deleteMachineSMOImpl;
+
+/**
+ * 添加设备数据
+ * @param pd 页面数据封装
+ * @return ResponseEntity 对象
+ */
+public ResponseEntity<String> delete(IPageData pd){
+        return deleteMachineSMOImpl.deleteMachine(pd);
+    }
+
+public IDeleteMachineSMO getDeleteMachineSMOImpl() {
+        return deleteMachineSMOImpl;
+    }
+
+public void setDeleteMachineSMOImpl(IDeleteMachineSMO deleteMachineSMOImpl) {
+        this.deleteMachineSMOImpl = deleteMachineSMOImpl;
+    }
+            }

+ 34 - 0
WebService/src/main/java/com/java110/web/components/machine/EditMachineComponent.java

@@ -0,0 +1,34 @@
+package com.java110.web.components.machine;
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.machine.IEditMachineSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * 编辑小区组件
+ */
+@Component("editMachine")
+public class EditMachineComponent {
+
+    @Autowired
+    private IEditMachineSMO editMachineSMOImpl;
+
+    /**
+     * 添加小区数据
+     * @param pd 页面数据封装
+     * @return ResponseEntity 对象
+     */
+    public ResponseEntity<String> update(IPageData pd){
+        return editMachineSMOImpl.updateMachine(pd);
+    }
+
+    public IEditMachineSMO getEditMachineSMOImpl() {
+        return editMachineSMOImpl;
+    }
+
+    public void setEditMachineSMOImpl(IEditMachineSMO editMachineSMOImpl) {
+        this.editMachineSMOImpl = editMachineSMOImpl;
+    }
+}

+ 41 - 0
WebService/src/main/java/com/java110/web/components/machine/MachineManageComponent.java

@@ -0,0 +1,41 @@
+package com.java110.web.components.machine;
+
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.machine.IListMachinesSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * 设备组件管理类
+ * <p>
+ * add by wuxw
+ * <p>
+ * 2019-06-29
+ */
+@Component("machineManage")
+public class MachineManageComponent {
+
+    @Autowired
+    private IListMachinesSMO listMachinesSMOImpl;
+
+    /**
+     * 查询设备列表
+     *
+     * @param pd 页面数据封装
+     * @return 返回 ResponseEntity 对象
+     */
+    public ResponseEntity<String> list(IPageData pd) {
+        return listMachinesSMOImpl.listMachines(pd);
+    }
+
+    public IListMachinesSMO getListMachinesSMOImpl() {
+        return listMachinesSMOImpl;
+    }
+
+    public void setListMachinesSMOImpl(IListMachinesSMO listMachinesSMOImpl) {
+        this.listMachinesSMOImpl = listMachinesSMOImpl;
+    }
+}

+ 19 - 0
WebService/src/main/java/com/java110/web/smo/machine/IAddMachineSMO.java

@@ -0,0 +1,19 @@
+package com.java110.web.smo.machine;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 添加设备接口
+ *
+ * add by wuxw 2019-06-30
+ */
+public interface IAddMachineSMO {
+
+    /**
+     * 添加设备
+     * @param pd 页面数据封装
+     * @return ResponseEntity 对象
+     */
+    ResponseEntity<String> saveMachine(IPageData pd);
+}

+ 19 - 0
WebService/src/main/java/com/java110/web/smo/machine/IDeleteMachineSMO.java

@@ -0,0 +1,19 @@
+package com.java110.web.smo.machine;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 添加设备接口
+ *
+ * add by wuxw 2019-06-30
+ */
+public interface IDeleteMachineSMO {
+
+    /**
+     * 添加设备
+     * @param pd 页面数据封装
+     * @return ResponseEntity 对象
+     */
+    ResponseEntity<String> deleteMachine(IPageData pd);
+}

+ 19 - 0
WebService/src/main/java/com/java110/web/smo/machine/IEditMachineSMO.java

@@ -0,0 +1,19 @@
+package com.java110.web.smo.machine;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 修改设备接口
+ *
+ * add by wuxw 2019-06-30
+ */
+public interface IEditMachineSMO {
+
+    /**
+     * 修改小区
+     * @param pd 页面数据封装
+     * @return ResponseEntity 对象
+     */
+    ResponseEntity<String> updateMachine(IPageData pd);
+}

+ 22 - 0
WebService/src/main/java/com/java110/web/smo/machine/IListMachinesSMO.java

@@ -0,0 +1,22 @@
+package com.java110.web.smo.machine;
+
+import com.java110.core.context.IPageData;
+import com.java110.utils.exception.SMOException;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 设备管理服务接口类
+ * <p>
+ * add by wuxw 2019-06-29
+ */
+public interface IListMachinesSMO {
+
+    /**
+     * 查询设备信息
+     *
+     * @param pd 页面数据封装
+     * @return ResponseEntity 对象数据
+     * @throws SMOException 业务代码层
+     */
+    ResponseEntity<String> listMachines(IPageData pd) throws SMOException;
+}

+ 67 - 0
WebService/src/main/java/com/java110/web/smo/machine/impl/AddMachineSMOImpl.java

@@ -0,0 +1,67 @@
+package com.java110.web.smo.machine.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.component.AbstractComponentSMO;
+import com.java110.core.context.IPageData;
+import com.java110.utils.constant.PrivilegeCodeConstant;
+import com.java110.utils.constant.ServiceConstant;
+import com.java110.utils.util.Assert;
+import com.java110.web.smo.machine.IAddMachineSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+
+/**
+ * 添加小区服务实现类
+ * add by wuxw 2019-06-30
+ */
+@Service("addMachineSMOImpl")
+public class AddMachineSMOImpl extends AbstractComponentSMO implements IAddMachineSMO {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    protected void validate(IPageData pd, JSONObject paramIn) {
+
+        //super.validatePageInfo(pd);
+
+        //Assert.hasKeyAndValue(paramIn, "xxx", "xxx");
+        Assert.hasKeyAndValue(paramIn, "machineCode", "必填,请填写设备编码");
+        Assert.hasKeyAndValue(paramIn, "machineVersion", "必填,请填写设备版本号");
+        Assert.hasKeyAndValue(paramIn, "machineName", "必填,请填写设备名称");
+        Assert.hasKeyAndValue(paramIn, "machineTypeCd", "必填,请选择设备类型");
+        Assert.hasKeyAndValue(paramIn, "authCode", "必填,请填写鉴权编码");
+
+
+        super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.AGENT_HAS_LIST_MACHINE);
+
+    }
+
+    @Override
+    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) {
+        ResponseEntity<String> responseEntity = null;
+        super.validateStoreStaffCommunityRelationship(pd, restTemplate);
+
+        responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(),
+                ServiceConstant.SERVICE_API_URL + "/api/machine.saveMachine",
+                HttpMethod.POST);
+        return responseEntity;
+    }
+
+    @Override
+    public ResponseEntity<String> saveMachine(IPageData pd) {
+        return super.businessProcess(pd);
+    }
+
+    public RestTemplate getRestTemplate() {
+        return restTemplate;
+    }
+
+    public void setRestTemplate(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+}

+ 64 - 0
WebService/src/main/java/com/java110/web/smo/machine/impl/DeleteMachineSMOImpl.java

@@ -0,0 +1,64 @@
+package com.java110.web.smo.machine.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.component.AbstractComponentSMO;
+import com.java110.core.context.IPageData;
+import com.java110.utils.constant.PrivilegeCodeConstant;
+import com.java110.utils.constant.ServiceConstant;
+import com.java110.utils.util.Assert;
+import com.java110.web.smo.machine.IDeleteMachineSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+
+
+/**
+ * 添加小区服务实现类
+ * delete by wuxw 2019-06-30
+ */
+@Service("deleteMachineSMOImpl")
+public class DeleteMachineSMOImpl extends AbstractComponentSMO implements IDeleteMachineSMO {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    protected void validate(IPageData pd, JSONObject paramIn) {
+
+        //super.validatePageInfo(pd);
+
+        //Assert.hasKeyAndValue(paramIn, "xxx", "xxx");
+        Assert.hasKeyAndValue(paramIn, "machineId", "设备ID不能为空");
+
+
+        super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.AGENT_HAS_LIST_MACHINE);
+
+    }
+
+    @Override
+    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) {
+        ResponseEntity<String> responseEntity = null;
+        super.validateStoreStaffCommunityRelationship(pd, restTemplate);
+
+        responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(),
+                ServiceConstant.SERVICE_API_URL + "/api/machine.deleteMachine",
+                HttpMethod.POST);
+        return responseEntity;
+    }
+
+    @Override
+    public ResponseEntity<String> deleteMachine(IPageData pd) {
+        return super.businessProcess(pd);
+    }
+
+    public RestTemplate getRestTemplate() {
+        return restTemplate;
+    }
+
+    public void setRestTemplate(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+}

+ 66 - 0
WebService/src/main/java/com/java110/web/smo/machine/impl/EditMachineSMOImpl.java

@@ -0,0 +1,66 @@
+package com.java110.web.smo.machine.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.component.AbstractComponentSMO;
+import com.java110.core.context.IPageData;
+import com.java110.utils.constant.PrivilegeCodeConstant;
+import com.java110.utils.constant.ServiceConstant;
+import com.java110.utils.util.Assert;
+import com.java110.web.smo.machine.IEditMachineSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * 添加设备服务实现类
+ * add by wuxw 2019-06-30
+ */
+@Service("eidtMachineSMOImpl")
+public class EditMachineSMOImpl extends AbstractComponentSMO implements IEditMachineSMO {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    protected void validate(IPageData pd, JSONObject paramIn) {
+
+        //super.validatePageInfo(pd);
+
+        Assert.hasKeyAndValue(paramIn, "machineId", "设备ID不能为空");
+        Assert.hasKeyAndValue(paramIn, "machineCode", "必填,请填写设备编码");
+        Assert.hasKeyAndValue(paramIn, "machineVersion", "必填,请填写设备版本号");
+        Assert.hasKeyAndValue(paramIn, "machineName", "必填,请填写设备名称");
+        Assert.hasKeyAndValue(paramIn, "machineTypeCd", "必填,请选择设备类型");
+        Assert.hasKeyAndValue(paramIn, "authCode", "必填,请填写鉴权编码");
+
+
+        super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.AGENT_HAS_LIST_MACHINE);
+
+    }
+
+    @Override
+    protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) {
+        ResponseEntity<String> responseEntity = null;
+        super.validateStoreStaffCommunityRelationship(pd, restTemplate);
+
+        responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(),
+                ServiceConstant.SERVICE_API_URL + "/api/machine.updateMachine",
+                HttpMethod.POST);
+        return responseEntity;
+    }
+
+    @Override
+    public ResponseEntity<String> updateMachine(IPageData pd) {
+        return super.businessProcess(pd);
+    }
+
+    public RestTemplate getRestTemplate() {
+        return restTemplate;
+    }
+
+    public void setRestTemplate(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+}

+ 66 - 0
WebService/src/main/java/com/java110/web/smo/machine/impl/ListMachinesSMOImpl.java

@@ -0,0 +1,66 @@
+package com.java110.web.smo.machine.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.component.AbstractComponentSMO;
+import com.java110.core.context.IPageData;
+import com.java110.entity.component.ComponentValidateResult;
+import com.java110.utils.constant.PrivilegeCodeConstant;
+import com.java110.utils.constant.ServiceConstant;
+import com.java110.utils.exception.SMOException;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.web.smo.machine.IListMachinesSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Map;
+
+/**
+ * 查询machine服务类
+ */
+@Service("listMachinesSMOImpl")
+public class ListMachinesSMOImpl extends AbstractComponentSMO implements IListMachinesSMO {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    public ResponseEntity<String> listMachines(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_MACHINE);
+    }
+
+    @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/machine.listMachines" + 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;
+    }
+}

+ 89 - 0
WebService/src/main/resources/components/machinePackage/add-machine/addMachine.html

@@ -0,0 +1,89 @@
+<div id="addMachineModel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
+     aria-hidden="true">
+    <div class="modal-dialog modal-lg">
+        <div class="modal-content">
+            <div class="modal-body">
+                <h3 class="m-t-none m-b ">添加设备</h3>
+                <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="addFloorInfo.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="addFloorInfo.floorNum" type="email" 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="addFloorInfo.remark" type="tel" 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="addMachineInfo.machineCode" 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="addMachineInfo.machineVersion" 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="addMachineInfo.machineName" 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="addMachineInfo.machineTypeCd">
+                                        <option selected disabled value="">必填,请选择设备类型</option>
+                                        <option value="9999">锐目门禁</option>
+                                        <option value="9998">其他</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="addMachineInfo.authCode" type="text" placeholder="必填,请填写鉴权编码"
+                                           class="form-control">
+                                </div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">设备IP</label>
+                                <div class="col-sm-10">
+                                    <input v-model="addMachineInfo.machineIp" type="text" placeholder="选填,请填写设备IP"
+                                           class="form-control">
+                                </div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">设备MAC</label>
+                                <div class="col-sm-10">
+                                    <input v-model="addMachineInfo.machineMac" type="text" placeholder="选填,请填写设备MAC"
+                                           class="form-control">
+                                </div>
+                            </div>
+
+                            <div class="ibox-content">
+                                <button class="btn btn-primary float-right" type="button"
+                                        v-on:click="saveMachineInfo()"><i class="fa fa-check"></i>&nbsp;保存
+                                </button>
+                                <button type="button" class="btn btn-warning float-right" style="margin-right:20px;"
+                                        data-dismiss="modal">取消
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 160 - 0
WebService/src/main/resources/components/machinePackage/add-machine/addMachine.js

@@ -0,0 +1,160 @@
+(function (vc) {
+
+    vc.extends({
+        propTypes: {
+            callBackListener: vc.propTypes.string, //父组件名称
+            callBackFunction: vc.propTypes.string //父组件监听方法
+        },
+        data: {
+            addMachineInfo: {
+                machineId: '',
+                machineCode: '',
+                machineVersion: '',
+                machineName: '',
+                machineTypeCd: '',
+                authCode: '',
+                machineIp: '',
+                machineMac: '',
+
+            }
+        },
+        _initMethod: function () {
+
+        },
+        _initEvent: function () {
+            vc.on('addMachine', 'openAddMachineModal', function () {
+                $('#addMachineModel').modal('show');
+            });
+        },
+        methods: {
+            addMachineValidate() {
+                return vc.validate.validate({
+                    addMachineInfo: vc.component.addMachineInfo
+                }, {
+                    'addMachineInfo.machineCode': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "设备编码不能为空"
+                        },
+                        {
+                            limit: "maxin",
+                            param: "1,30",
+                            errInfo: "设备编码不能超过30位"
+                        },
+                    ],
+                    'addMachineInfo.machineVersion': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "版本号不能为空"
+                        }],
+                    'addMachineInfo.machineName':
+                        [
+                            {
+                                limit: "required",
+                                param: "",
+                                errInfo: "设备名称不能为空"
+                            }],
+                    'addMachineInfo.machineTypeCd':
+                        [
+                            {
+                                limit: "required",
+                                param: "",
+                                errInfo: "设备类型不能为空"
+                            },
+                            {
+                                limit: "num",
+                                param: "",
+                                errInfo: "设备类型格式错误"
+                            },
+                        ],
+                    'addMachineInfo.authCode':
+                        [
+                            {
+                                limit: "required",
+                                param: "",
+                                errInfo: "鉴权编码不能为空"
+                            },
+                            {
+                                limit: "maxLength",
+                                param: "64",
+                                errInfo: "鉴权编码不能大于64位"
+                            },
+                        ],
+                    'addMachineInfo.machineIp':
+                        [
+                            {
+                                limit: "maxLength",
+                                param: "64",
+                                errInfo: "设备IP格式错误"
+                            },
+                        ],
+                    'addMachineInfo.machineMac':
+                        [
+                            {
+                                limit: "maxLength",
+                                param: "64",
+                                errInfo: "设备MAC 格式错误"
+                            }
+                        ]
+                });
+            },
+            saveMachineInfo: function () {
+                if (!vc.component.addMachineValidate()) {
+                    vc.message(vc.validate.errInfo);
+
+                    return;
+                }
+
+                vc.component.addMachineInfo.communityId = vc.getCurrentCommunity().communityId;
+                //不提交数据将数据 回调给侦听处理
+                if (vc.notNull($props.callBackListener)) {
+                    vc.emit($props.callBackListener, $props.callBackFunction, vc.component.addMachineInfo);
+                    $('#addMachineModel').modal('hide');
+                    return;
+                }
+
+                vc.http.post(
+                    'addMachine',
+                    'save',
+                    JSON.stringify(vc.component.addMachineInfo),
+                    {
+                        emulateJSON: true
+                    },
+                    function (json, res) {
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if (res.status == 200) {
+                            //关闭model
+                            $('#addMachineModel').modal('hide');
+                            vc.component.clearAddMachineInfo();
+                            vc.emit('machineManage', 'listMachine', {});
+
+                            return;
+                        }
+                        vc.message(json);
+
+                    },
+                    function (errInfo, error) {
+                        console.log('请求失败处理');
+
+                        vc.message(errInfo);
+
+                    });
+            },
+            clearAddMachineInfo: function () {
+                vc.component.addMachineInfo = {
+                    machineCode: '',
+                    machineVersion: '',
+                    machineName: '',
+                    machineTypeCd: '',
+                    authCode: '',
+                    machineIp: '',
+                    machineMac: '',
+
+                };
+            }
+        }
+    });
+
+})(window.vc);

+ 68 - 0
WebService/src/main/resources/components/machinePackage/choose-machine/chooseMachine.html

@@ -0,0 +1,68 @@
+<div id = "chooseMachineModel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="chooseMachineModelLabel" aria-hidden="true" >
+    <div class="modal-dialog modal-lg">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h3 class="modal-title" id="chooseMachineModelLabel">选择设备</h3>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <div class=" row">
+                    <div class="col-lg-12">
+                        <div class="ibox ">
+                            <div class="row">
+
+                                <div class="col-sm-7 m-b-xs">
+                                </div>
+                                <div class="col-sm-5">
+                                    <div class="input-group">
+                                        <input placeholder="输入设备名称" type="text" v-model="chooseMachineInfo._currentMachineName" class="form-control form-control-sm">
+                                        <span class="input-group-append">
+                                                <button type="button" class="btn btn-sm btn-primary" v-on:click="queryMachines()">查询</button>
+                                            </span>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="table-responsive" style="margin-top:15px">
+                                <table class="table table-striped">
+                                    <thead>
+                                        <tr>
+                                                                        <th class="text-center">设备ID</th>
+                            <th class="text-center">设备编码</th>
+                            <th class="text-center">版本号</th>
+                            <th class="text-center">设备名称</th>
+                            <th class="text-center">设备类型</th>
+                            <th class="text-center">鉴权编码</th>
+                            <th class="text-center">设备IP</th>
+                            <th class="text-center">设备MAC</th>
+                            <th class="text-center">操作</th>
+
+                                        </tr>
+                                    </thead>
+                                    <tbody>
+                                        <tr v-for="machine in chooseMachineInfo.machines">
+                                                                        <td class="text-center">{{machine.machineId}}</td>
+                            <td class="text-center">{{machine.machineCode}}</td>
+                            <td class="text-center">{{machine.machineVersion}}</td>
+                            <td class="text-center">{{machine.machineName}}</td>
+                            <td class="text-center">{{machine.machineTypeCd}}</td>
+                            <td class="text-center">{{machine.authCode}}</td>
+                            <td class="text-center">{{machine.machineIp}}</td>
+                            <td class="text-center">{{machine.machineMac}}</td>
+
+                                            <td>
+                                                <button class="btn btn-primary btn-xs" v-on:click="chooseMachine(machine)">选择</button>
+                                            </td>
+                                        </tr>
+                                    </tbody>
+                                </table>
+                            </div>
+
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 64 - 0
WebService/src/main/resources/components/machinePackage/choose-machine/chooseMachine.js

@@ -0,0 +1,64 @@
+(function(vc){
+    vc.extends({
+        propTypes: {
+           emitChooseMachine:vc.propTypes.string,
+           emitLoadData:vc.propTypes.string
+        },
+        data:{
+            chooseMachineInfo:{
+                machines:[],
+                _currentMachineName:'',
+            }
+        },
+        _initMethod:function(){
+        },
+        _initEvent:function(){
+            vc.on('chooseMachine','openChooseMachineModel',function(_param){
+                $('#chooseMachineModel').modal('show');
+                vc.component._refreshChooseMachineInfo();
+                vc.component._loadAllMachineInfo(1,10,'');
+            });
+        },
+        methods:{
+            _loadAllMachineInfo:function(_page,_row,_name){
+                var param = {
+                    params:{
+                        page:_page,
+                        row:_row,
+                        communityId:vc.getCurrentCommunity().communityId,
+                        name:_name
+                    }
+                };
+
+                //发送get请求
+               vc.http.get('chooseMachine',
+                            'list',
+                             param,
+                             function(json){
+                                var _machineInfo = JSON.parse(json);
+                                vc.component.chooseMachineInfo.machines = _machineInfo.machines;
+                             },function(){
+                                console.log('请求失败处理');
+                             }
+                           );
+            },
+            chooseMachine:function(_machine){
+                if(_machine.hasOwnProperty('name')){
+                     _machine.machineName = _machine.name;
+                }
+                vc.emit($props.emitChooseMachine,'chooseMachine',_machine);
+                vc.emit($props.emitLoadData,'listMachineData',{
+                    machineId:_machine.machineId
+                });
+                $('#chooseMachineModel').modal('hide');
+            },
+            queryMachines:function(){
+                vc.component._loadAllMachineInfo(1,10,vc.component.chooseMachineInfo._currentMachineName);
+            },
+            _refreshChooseMachineInfo:function(){
+                vc.component.chooseMachineInfo._currentMachineName = "";
+            }
+        }
+
+    });
+})(window.vc);

+ 19 - 0
WebService/src/main/resources/components/machinePackage/delete-machine/deleteMachine.html

@@ -0,0 +1,19 @@
+<div class="modal fade" id="deleteMachineModel" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title" id="exampleModalLabel">请确认您的操作!</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <tr align="center"><th>确定删除设备</th></tr>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal" v-on:click="closeDeleteMachineModel()">点错了</button>
+                <button type="button" class="btn btn-primary" v-on:click="deleteMachine()">确认删除</button>
+            </div>
+        </div>
+    </div>
+</div>

+ 52 - 0
WebService/src/main/resources/components/machinePackage/delete-machine/deleteMachine.js

@@ -0,0 +1,52 @@
+(function(vc,vm){
+
+    vc.extends({
+        data:{
+            deleteMachineInfo:{
+
+            }
+        },
+         _initMethod:function(){
+
+         },
+         _initEvent:function(){
+             vc.on('deleteMachine','openDeleteMachineModal',function(_params){
+
+                vc.component.deleteMachineInfo = _params;
+                $('#deleteMachineModel').modal('show');
+
+            });
+        },
+        methods:{
+            deleteMachine:function(){
+                vc.component.deleteMachineInfo.communityId=vc.getCurrentCommunity().communityId;
+                vc.http.post(
+                    'deleteMachine',
+                    'delete',
+                    JSON.stringify(vc.component.deleteMachineInfo),
+                    {
+                        emulateJSON:true
+                     },
+                     function(json,res){
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if(res.status == 200){
+                            //关闭model
+                            $('#deleteMachineModel').modal('hide');
+                            vc.emit('machineManage','listMachine',{});
+                            return ;
+                        }
+                        vc.message(json);
+                     },
+                     function(errInfo,error){
+                        console.log('请求失败处理');
+                        vc.message(json);
+
+                     });
+            },
+            closeDeleteMachineModel:function(){
+                $('#deleteMachineModel').modal('hide');
+            }
+        }
+    });
+
+})(window.vc,window.vc.component);

+ 76 - 0
WebService/src/main/resources/components/machinePackage/edit-machine/editMachine.html

@@ -0,0 +1,76 @@
+<div id="editMachineModel" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
+     aria-hidden="true">
+    <div class="modal-dialog modal-lg">
+        <div class="modal-content">
+            <div class="modal-body">
+                <h3 class="m-t-none m-b ">修改设备</h3>
+                <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="editMachineInfo.machineCode" 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="editMachineInfo.machineVersion" 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="editMachineInfo.machineName" 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="editMachineInfo.machineTypeCd">
+                                        <option selected disabled value="">必填,请选择设备类型</option>
+                                        <option value="9999">锐目门禁</option>
+                                        <option value="9998">其他</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="editMachineInfo.authCode" type="text" placeholder="必填,请填写鉴权编码"
+                                           class="form-control">
+                                </div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">设备IP</label>
+                                <div class="col-sm-10">
+                                    <input v-model="editMachineInfo.machineIp" type="text" placeholder="选填,请填写设备IP"
+                                           class="form-control">
+                                </div>
+                            </div>
+                            <div class="form-group row">
+                                <label class="col-sm-2 col-form-label">设备MAC</label>
+                                <div class="col-sm-10">
+                                    <input v-model="editMachineInfo.machineMac" type="text" placeholder="选填,请填写设备MAC"
+                                           class="form-control">
+                                </div>
+                            </div>
+
+                            <div class="ibox-content">
+                                <button class="btn btn-primary float-right" type="button" v-on:click="editMachine()"><i
+                                        class="fa fa-check"></i>&nbsp;保存
+                                </button>
+                                <button type="button" class="btn btn-warning float-right" style="margin-right:20px;"
+                                        data-dismiss="modal">取消
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 156 - 0
WebService/src/main/resources/components/machinePackage/edit-machine/editMachine.js

@@ -0,0 +1,156 @@
+(function (vc, vm) {
+
+    vc.extends({
+        data: {
+            editMachineInfo: {
+                machineId: '',
+                machineCode: '',
+                machineVersion: '',
+                machineName: '',
+                machineTypeCd: '',
+                authCode: '',
+                machineIp: '',
+                machineMac: '',
+
+            }
+        },
+        _initMethod: function () {
+
+        },
+        _initEvent: function () {
+            vc.on('editMachine', 'openEditMachineModal', function (_params) {
+                vc.component.refreshEditMachineInfo();
+                $('#editMachineModel').modal('show');
+                vc.copyObject(_params, vc.component.editMachineInfo);
+                vc.component.editMachineInfo.communityId = vc.getCurrentCommunity().communityId;
+            });
+        },
+        methods: {
+            editMachineValidate: function () {
+                return vc.validate.validate({
+                    editMachineInfo: vc.component.editMachineInfo
+                }, {
+                    'editMachineInfo.machineCode': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "设备编码不能为空"
+                        },
+                        {
+                            limit: "maxin",
+                            param: "1,30",
+                            errInfo: "设备编码不能超过30位"
+                        },
+                    ],
+                    'editMachineInfo.machineVersion': [
+                        {
+                            limit: "required",
+                            param: "",
+                            errInfo: "版本号不能为空"
+                        }],
+                    'editMachineInfo.machineName':
+                        [
+                            {
+                                limit: "required",
+                                param: "",
+                                errInfo: "设备名称不能为空"
+                            }],
+                    'editMachineInfo.machineTypeCd':
+                        [
+                            {
+                                limit: "required",
+                                param: "",
+                                errInfo: "设备类型不能为空"
+                            },
+                            {
+                                limit: "num",
+                                param: "",
+                                errInfo: "设备类型格式错误"
+                            },
+                        ],
+                    'editMachineInfo.authCode':
+                        [
+                            {
+                                limit: "required",
+                                param: "",
+                                errInfo: "鉴权编码不能为空"
+                            },
+                            {
+                                limit: "maxLength",
+                                param: "64",
+                                errInfo: "鉴权编码不能大于64位"
+                            },
+                        ],
+                    'editMachineInfo.machineIp':
+                        [
+                            {
+                                limit: "maxLength",
+                                param: "64",
+                                errInfo: "设备IP格式错误"
+                            },
+                        ],
+                    'editMachineInfo.machineMac':
+                        [
+                            {
+                                limit: "maxLength",
+                                param: "64",
+                                errInfo: "设备MAC 格式错误"
+                            },
+                        ],
+                    'editMachineInfo.machineId':
+                        [
+                            {
+                                limit: "required",
+                                param: "",
+                                errInfo: "设备ID不能为空"
+                            }]
+
+                })
+                    ;
+            },
+            editMachine: function () {
+                if (!vc.component.editMachineValidate()) {
+                    vc.message(vc.validate.errInfo);
+                    return;
+                }
+
+                vc.http.post(
+                    'editMachine',
+                    'update',
+                    JSON.stringify(vc.component.editMachineInfo),
+                    {
+                        emulateJSON: true
+                    },
+                    function (json, res) {
+                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
+                        if (res.status == 200) {
+                            //关闭model
+                            $('#editMachineModel').modal('hide');
+                            vc.emit('machineManage', 'listMachine', {});
+                            return;
+                        }
+                        vc.message(json);
+                    },
+                    function (errInfo, error) {
+                        console.log('请求失败处理');
+
+                        vc.message(errInfo);
+                    });
+            },
+            refreshEditMachineInfo: function () {
+                vc.component.editMachineInfo = {
+                    machineId: '',
+                    machineCode: '',
+                    machineVersion: '',
+                    machineName: '',
+                    machineTypeCd: '',
+                    authCode: '',
+                    machineIp: '',
+                    machineMac: '',
+
+                }
+            }
+        }
+    });
+
+})(window.vc, window.vc.component);

+ 116 - 0
WebService/src/main/resources/components/machinePackage/machine-manage/machineManage.html

@@ -0,0 +1,116 @@
+<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>查询条件</h5>
+                    <div class="ibox-tools" style="top:10px;">
+                        <button type="button"  class="btn btn-link btn-sm" style="margin-right:10px;"  v-on:click="_moreCondition()">{{machineManageInfo.moreCondition == true?'隐藏':'更多'}}</button>
+                    </div>
+                </div>
+                <div class="ibox-content">
+                    <div class="row">
+<div class="col-sm-4" >
+<div class="form-group">
+                                <input type="text" placeholder="请输入设备编码" v-model="machineManageInfo.conditions.machineCode" class=" form-control">
+                            </div>                        </div><div class="col-sm-4" >
+<select class="custom-select" v-model="machineManageInfo.conditions.machineTypeCd">
+         <option selected  value="">请选择设备类型</option>
+         <option  value="9999">锐目门禁</option>
+<option  value="9998">其他</option>
+  </select>                        </div><div class="col-sm-3" >
+<div class="form-group">
+                                <input type="text" placeholder="请输入设备名称" v-model="machineManageInfo.conditions.machineName" class=" form-control">
+                            </div>                        </div><div class="col-sm-1">
+                            <button type="button" class="btn btn-primary btn-sm" v-on:click="_queryMachineMethod()">
+                                    <i class="glyphicon glyphicon-search"></i> 查询
+                            </button>
+                        </div></div>
+<div class="row">
+<div class="col-sm-4" v-if="machineManageInfo.moreCondition == true">
+<div class="form-group">
+                                <input type="text" placeholder="请输入设备IP" v-model="machineManageInfo.conditions.machineIp" class=" form-control">
+                            </div>                        </div><div class="col-sm-4" v-if="machineManageInfo.moreCondition == true">
+<div class="form-group">
+                                <input type="text" placeholder="请输入设备MAC" v-model="machineManageInfo.conditions.machineMac" class=" form-control">
+                            </div>                        </div></div>
+
+
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="row">
+        <div class="col-lg-12">
+            <div class="ibox">
+                <div class="ibox-title">
+                    <h5>设备信息</h5>
+                    <div class="ibox-tools" style="top:10px;">
+                        <button type="button" class="btn btn-primary btn-sm" v-on:click="_openAddMachineModal()">
+                            <i class="glyphicon glyphicon-plus"></i>
+                            添加设备
+                        </button>
+                    </div>
+                </div>
+                <div class="ibox-content">
+
+                    <table class="footable table table-stripped toggle-arrow-tiny"
+                           data-page-size="15"
+                    >
+                        <thead>
+                        <tr>
+                                                        <th class="text-center">设备ID</th>
+                            <th class="text-center">设备编码</th>
+                            <th class="text-center">版本号</th>
+                            <th class="text-center">设备名称</th>
+                            <th class="text-center">设备类型</th>
+                            <th class="text-center">设备IP</th>
+                            <th class="text-center">设备MAC</th>
+                            <th class="text-center">操作</th>
+
+
+                        </tr>
+                        </thead>
+                        <tbody>
+                        <tr v-for="machine in machineManageInfo.machines">
+                                                        <td class="text-center">{{machine.machineId}}</td>
+                            <td class="text-center">{{machine.machineCode}}</td>
+                            <td class="text-center">{{machine.machineVersion}}</td>
+                            <td class="text-center">{{machine.machineName}}</td>
+                            <td class="text-center">{{machine.machineTypeCd}}</td>
+                            <td class="text-center">{{machine.machineIp}}</td>
+                            <td class="text-center">{{machine.machineMac}}</td>
+                            <td class="text-center"><div class="btn-group">
+                                    <button class="btn-white btn btn-xs" v-on:click="_openEditMachineModel(machine)">修改</button>
+                                </div>
+                                <div class="btn-group">
+                                    <button class="btn-white btn btn-xs" v-on:click="_openDeleteMachineModel(machine)">删除</button>
+                                </div></td>
+
+                        </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="addMachine"
+               callBackListener=""
+               callBackFunction=""
+    ></vc:create>
+    <vc:create name="editMachine"></vc:create>
+    <vc:create name="deleteMachine"></vc:create>
+
+</div>

+ 88 - 0
WebService/src/main/resources/components/machinePackage/machine-manage/machineManage.js

@@ -0,0 +1,88 @@
+/**
+    入驻小区
+**/
+(function(vc){
+    var DEFAULT_PAGE = 1;
+    var DEFAULT_ROWS = 10;
+    vc.extends({
+        data:{
+            machineManageInfo:{
+                machines:[],
+                total:0,
+                records:1,
+                moreCondition:false,
+                machineName:'',
+                conditions:{
+                    machineCode:'',
+machineTypeCd:'',
+machineName:'',
+machineIp:'',
+machineMac:'',
+
+                }
+            }
+        },
+        _initMethod:function(){
+            vc.component._listMachines(DEFAULT_PAGE, DEFAULT_ROWS);
+        },
+        _initEvent:function(){
+            
+            vc.on('machineManage','listMachine',function(_param){
+                  vc.component._listMachines(DEFAULT_PAGE, DEFAULT_ROWS);
+            });
+             vc.on('pagination','page_event',function(_currentPage){
+                vc.component._listMachines(_currentPage,DEFAULT_ROWS);
+            });
+        },
+        methods:{
+            _listMachines:function(_page, _rows){
+
+                vc.component.machineManageInfo.conditions.page = _page;
+                vc.component.machineManageInfo.conditions.row = _rows;
+                var param = {
+                    params:vc.component.machineManageInfo.conditions
+               };
+
+               //发送get请求
+               vc.http.get('machineManage',
+                            'list',
+                             param,
+                             function(json,res){
+                                var _machineManageInfo=JSON.parse(json);
+                                vc.component.machineManageInfo.total = _machineManageInfo.total;
+                                vc.component.machineManageInfo.records = _machineManageInfo.records;
+                                vc.component.machineManageInfo.machines = _machineManageInfo.machines;
+                                vc.emit('pagination','init',{
+                                     total:vc.component.machineManageInfo.records,
+                                     currentPage:_page
+                                 });
+                             },function(errInfo,error){
+                                console.log('请求失败处理');
+                             }
+                           );
+            },
+            _openAddMachineModal:function(){
+                vc.emit('addMachine','openAddMachineModal',{});
+            },
+            _openEditMachineModel:function(_machine){
+                vc.emit('editMachine','openEditMachineModal',_machine);
+            },
+            _openDeleteMachineModel:function(_machine){
+                vc.emit('deleteMachine','openDeleteMachineModal',_machine);
+            },
+            _queryMachineMethod:function(){
+                vc.component._listMachines(DEFAULT_PAGE, DEFAULT_ROWS);
+
+            },
+            _moreCondition:function(){
+                if(vc.component.machineManageInfo.moreCondition){
+                    vc.component.machineManageInfo.moreCondition = false;
+                }else{
+                    vc.component.machineManageInfo.moreCondition = true;
+                }
+            }
+
+             
+        }
+    });
+})(window.vc);

+ 78 - 0
WebService/src/main/resources/components/machinePackage/view-machine-info/viewMachineInfo.html

@@ -0,0 +1,78 @@
+<div class="row">
+    <div class="col-lg-12">
+        <div class="ibox ">
+            <div class="ibox-title">
+                <h5>设备信息</h5>
+                <div class="ibox-tools" style="top:10px;">
+                    <button type="button" v-if="viewMachineInfo.index != 2" class="btn btn-primary btn-sm" style="margin-right:10px;"  v-on:click="_openSelectMachineInfoModel()">
+                        <i class="glyphicon glyphicon-search"></i> 选择设备</button>
+
+                    <button type="button" v-if="viewMachineInfo.index != 2" class="btn btn-primary btn-sm" v-on:click="_openAddMachineInfoModel()">
+                        <i class="glyphicon glyphicon-plus"></i> 添加设备</button>
+                </div>
+            </div>
+            <div class="ibox-content">
+                <div class="row">
+<div class="col-sm-4">
+                        <div class="form-group">
+                            <label class="col-form-label" >设备编码:</label>
+                            <label class="">{{viewMachineInfo.machineCode}}</label>
+                        </div>
+</div>
+<div class="col-sm-4">
+                        <div class="form-group">
+                            <label class="col-form-label" >版本号:</label>
+                            <label class="">{{viewMachineInfo.machineVersion}}</label>
+                        </div>
+</div>
+<div class="col-sm-4">
+                        <div class="form-group">
+                            <label class="col-form-label" >设备名称:</label>
+                            <label class="">{{viewMachineInfo.machineName}}</label>
+                        </div>
+</div>
+</div>
+<div class="row">
+<div class="col-sm-4">
+                        <div class="form-group">
+                            <label class="col-form-label" >设备类型:</label>
+                            <label class="">{{viewMachineInfo.machineTypeCd}}</label>
+                        </div>
+</div>
+<div class="col-sm-4">
+                        <div class="form-group">
+                            <label class="col-form-label" >鉴权编码:</label>
+                            <label class="">{{viewMachineInfo.authCode}}</label>
+                        </div>
+</div>
+<div class="col-sm-4">
+                        <div class="form-group">
+                            <label class="col-form-label" >设备IP:</label>
+                            <label class="">{{viewMachineInfo.machineIp}}</label>
+                        </div>
+</div>
+</div>
+<div class="row">
+<div class="col-sm-4">
+                        <div class="form-group">
+                            <label class="col-form-label" >设备MAC:</label>
+                            <label class="">{{viewMachineInfo.machineMac}}</label>
+                        </div>
+</div>
+</div>
+
+            </div>
+        </div>
+    </div>
+
+    <vc:create name="addMachine"
+               callBackListener="viewMachineInfo"
+               callBackFunction="chooseMachine"
+    ></vc:create>
+
+
+    <vc:create name="chooseMachine"
+               emitChooseMachine="viewMachineInfo"
+               emitLoadData="viewMachineInfo"
+    ></vc:create>
+</div>

+ 54 - 0
WebService/src/main/resources/components/machinePackage/view-machine-info/viewMachineInfo.js

@@ -0,0 +1,54 @@
+/**
+    设备 组件
+**/
+(function(vc){
+
+    vc.extends({
+        propTypes: {
+           callBackListener:vc.propTypes.string, //父组件名称
+           callBackFunction:vc.propTypes.string //父组件监听方法
+        },
+        data:{
+            viewMachineInfo:{
+                index:0,
+                flowComponent:'viewMachineInfo',
+                machineCode:'',
+machineVersion:'',
+machineName:'',
+machineTypeCd:'',
+authCode:'',
+machineIp:'',
+machineMac:'',
+
+            }
+        },
+        _initMethod:function(){
+            //根据请求参数查询 查询 业主信息
+            vc.component._loadMachineInfoData();
+        },
+        _initEvent:function(){
+            vc.on('viewMachineInfo','chooseMachine',function(_app){
+                vc.copyObject(_app, vc.component.viewMachineInfo);
+                vc.emit($props.callBackListener,$props.callBackFunction,vc.component.viewMachineInfo);
+            });
+
+            vc.on('viewMachineInfo', 'onIndex', function(_index){
+                vc.component.viewMachineInfo.index = _index;
+            });
+
+        },
+        methods:{
+
+            _openSelectMachineInfoModel(){
+                vc.emit('chooseMachine','openChooseMachineModel',{});
+            },
+            _openAddMachineInfoModel(){
+                vc.emit('addMachine','openAddMachineModal',{});
+            },
+            _loadMachineInfoData:function(){
+
+            }
+        }
+    });
+
+})(window.vc);

+ 36 - 0
WebService/src/main/resources/views/machineFlow.html

@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html lang="en"
+      xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:th="http://www.thymeleaf.org"
+      xmlns:vc="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8"/>
+    <title>设备初始化|java110</title>
+    <vc:create name="commonTop"></vc:create>
+</head>
+<body>
+<vc:create name="bodyTop"></vc:create>
+<div id="wrapper">
+    <vc:create name="menu"></vc:create>
+
+
+    <div id="page-wrapper" class="gray-bg dashbard-1">
+        <div class="row border-bottom">
+            <vc:create name="nav"></vc:create>
+        </div>
+        <div class="wrapper wrapper-content" style="padding-bottom: 0px;">
+            <vc:create name="breadcrumb"></vc:create>
+        </div>
+        <!-- id="component" -->
+        <div class="wrapper wrapper-content animated fadeInRight">
+            <vc:create name="machineManage"></vc:create>
+        </div>
+
+        <vc:create name="copyright"></vc:create>
+
+    </div>
+</div>
+
+<vc:create name="commonBottom"></vc:create>
+</body>
+</html>

+ 67 - 0
java110-bean/src/main/java/com/java110/vo/api/machine/ApiMachineDataVo.java

@@ -0,0 +1,67 @@
+package com.java110.vo.api.machine;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ApiMachineDataVo implements Serializable {
+
+    private String machineId;
+private String machineCode;
+private String machineVersion;
+private String machineName;
+private String machineTypeCd;
+private String authCode;
+private String machineIp;
+private String machineMac;
+public String getMachineId() {
+        return machineId;
+    }
+public void setMachineId(String machineId) {
+        this.machineId = machineId;
+    }
+public String getMachineCode() {
+        return machineCode;
+    }
+public void setMachineCode(String machineCode) {
+        this.machineCode = machineCode;
+    }
+public String getMachineVersion() {
+        return machineVersion;
+    }
+public void setMachineVersion(String machineVersion) {
+        this.machineVersion = machineVersion;
+    }
+public String getMachineName() {
+        return machineName;
+    }
+public void setMachineName(String machineName) {
+        this.machineName = machineName;
+    }
+public String getMachineTypeCd() {
+        return machineTypeCd;
+    }
+public void setMachineTypeCd(String machineTypeCd) {
+        this.machineTypeCd = machineTypeCd;
+    }
+public String getAuthCode() {
+        return authCode;
+    }
+public void setAuthCode(String authCode) {
+        this.authCode = authCode;
+    }
+public String getMachineIp() {
+        return machineIp;
+    }
+public void setMachineIp(String machineIp) {
+        this.machineIp = machineIp;
+    }
+public String getMachineMac() {
+        return machineMac;
+    }
+public void setMachineMac(String machineMac) {
+        this.machineMac = machineMac;
+    }
+
+
+
+}

+ 19 - 0
java110-bean/src/main/java/com/java110/vo/api/machine/ApiMachineVo.java

@@ -0,0 +1,19 @@
+package com.java110.vo.api.machine;
+
+import com.java110.vo.MorePageVo;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class ApiMachineVo extends MorePageVo implements Serializable {
+    List<ApiMachineDataVo> machines;
+
+
+    public List<ApiMachineDataVo> getMachines() {
+        return machines;
+    }
+
+    public void setMachines(List<ApiMachineDataVo> machines) {
+        this.machines = machines;
+    }
+}

+ 62 - 70
java110-code-generator/src/main/resources/web/template_1.json

@@ -7,132 +7,124 @@
   "searchName": "设备名称",
   "conditions": [
     {
-      "name": "投诉ID",
+      "name": "设备编码",
       "inputType": "input",
-      "code": "complaintId",
+      "code": "machineCode",
       "whereCondition": "equal"
     },
     {
-      "name": "投诉类型",
+      "name": "设备类型",
       "inputType": "select",
-      "code": "typeCd",
-      "selectValue":"809001,809002",
-      "selectValueName":"投诉,建议",
+      "code": "machineTypeCd",
+      "selectValue":"9999,9998",
+      "selectValueName":"锐目门禁,其他",
       "whereCondition": "equal"
     },
     {
-      "name": "投诉人",
+      "name": "设备名称",
       "inputType": "input",
-      "code": "complaintName",
+      "code": "machineName",
       "whereCondition": "equal"
     },
     {
-      "name": "联系电话",
+      "name": "设备IP",
       "inputType": "input",
-      "code": "tel",
+      "code": "machineIp",
       "whereCondition": "equal"
     },
     {
-      "name": "房屋编号",
+      "name": "设备MAC",
       "inputType": "input",
-      "code": "roomId",
-      "whereCondition": "equal"
-    },
-    {
-      "name": "投诉状态",
-      "inputType": "select",
-      "code": "state",
-      "selectValue":"1100,1200",
-      "selectValueName":"派单,结单",
+      "code": "machineMac",
       "whereCondition": "equal"
     }
   ],
   "columns":[
     {
-      "code":"storeId",
-      "cnCode":"商户ID",
-      "desc":"必填,请填写商户ID",
+      "code":"machineCode",
+      "cnCode":"设备编码",
+      "desc":"必填,请填写设备编码",
       "required":true,
       "hasDefaultValue":false,
       "inputType":"input",
-      "limit":"num",
+      "limit":"maxin",
+      "limitParam":"1,30",
+      "limitErrInfo":"设备编码不能超过30位",
+      "show": true
+    },
+    {
+      "code": "machineVersion",
+      "cnCode":"版本号",
+      "desc":"必填,请填写设备版本号",
+      "required":true,
+      "hasDefaultValue":false,
+      "inputType": "input",
+      "limitParam":"1,30",
       "limitParam":"",
-      "limitErrInfo":"商户ID必须为数字",
-      "show": false
+      "limitErrInfo":"设备版本号不能超过30位",
+      "show": true
     },
     {
-      "code": "typeCd",
-      "cnCode":"投诉类型",
-      "desc":"必填,请选择投诉类型",
+      "code": "machineName",
+      "cnCode":"设备名称",
+      "desc":"必填,请填写设备名称",
       "required":true,
       "hasDefaultValue":false,
-      "inputType": "select",
-      "selectValue":"809001,809002",
-      "selectValueName":"投诉,建议",
-      "limit":"num",
+      "inputType": "input",
+      "limitParam":"1,200",
       "limitParam":"",
-      "limitErrInfo":"投诉类型格式错误",
+      "limitErrInfo":"设备名称不能超过200位",
       "show": true
     },
     {
-      "code":"roomId",
-      "cnCode":"房屋编号",
-      "desc":"必填,请选择房屋编号",
+      "code":"machineTypeCd",
+      "cnCode":"设备类型",
+      "desc":"必填,请选择设备类型",
       "required":true,
       "hasDefaultValue":false,
-      "inputType":"input",
+      "inputType": "select",
+      "selectValue":"9999,9998",
+      "selectValueName":"锐目门禁,其他",
       "limit":"num",
       "limitParam":"",
-      "limitErrInfo":"房屋编号格式错误",
+      "limitErrInfo":"设备类型格式错误",
       "show": true
     },
     {
-      "code":"complaintName",
-      "cnCode":"投诉人",
-      "desc":"必填,请填写投诉人",
+      "code":"authCode",
+      "cnCode":"鉴权编码",
+      "desc":"必填,请填写鉴权编码",
       "required":true,
       "hasDefaultValue":false,
       "inputType":"input",
       "limit":"maxLength",
-      "limitParam":"200",
-      "limitErrInfo":"投诉人不能大于200位",
+      "limitParam":"64",
+      "limitErrInfo":"鉴权编码不能大于64位",
       "show": false
     },
     {
-      "code":"tel",
-      "cnCode":"投诉电话",
-      "desc":"必填,请填写投诉电话",
-      "required":true,
+      "code":"machineIp",
+      "cnCode":"设备IP",
+      "desc":"可选,请填写设备IP",
+      "required":false,
       "hasDefaultValue":false,
       "inputType":"input",
-      "limit":"phone",
-      "limitParam":"",
-      "limitErrInfo":"投诉电话格式错误",
+      "limit":"maxLength",
+      "limitParam":"64",
+      "limitErrInfo":"设备IP格式错误",
       "show": true
     },
     {
-      "code":"state",
-      "cnCode":"投诉状态",
-      "desc":"必填,请填写投诉状态",
-      "required":true,
+      "code":"machineMac",
+      "cnCode":"设备MAC",
+      "desc":"可选,请填写设备MAC",
+      "required":false,
       "hasDefaultValue":false,
       "inputType":"input",
-      "limit":"num",
-      "limitParam":"",
-      "limitErrInfo":"投诉状态格式错误",
-      "show": true
-    },
-    {
-      "code":"context",
-      "cnCode":"投诉内容",
-      "desc":"必填,请填写投诉内容",
-      "required":true,
-      "hasDefaultValue":false,
-      "inputType":"textarea",
       "limit":"maxLength",
-      "limitParam":"4000",
-      "limitErrInfo":"投诉状态超过4000位",
-      "show": false
+      "limitParam":"64",
+      "limitErrInfo":"设备MAC 格式错误",
+      "show": true
     }
   ]
 }

+ 3 - 0
java110-utils/src/main/java/com/java110/utils/constant/PrivilegeCodeConstant.java

@@ -134,6 +134,9 @@ public final class PrivilegeCodeConstant {
     public static final String AGENT_HAS_LIST_AUDIT_COMPLAINT = "502019110360380006";
     public static final String AGENT_HAS_LIST_AUDIT_HISTORY_COMPLAINT = "502019110534240006";
 
+    //设备信息
+    public static final String AGENT_HAS_LIST_MACHINE = "502019110809250044";
+
 
 
 }

+ 31 - 0
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeMachineConstant.java

@@ -0,0 +1,31 @@
+package com.java110.utils.constant;
+
+/**
+ * 设备常量类
+ * Created by wuxw on 2017/5/20.
+ */
+public class ServiceCodeMachineConstant {
+
+    /**
+     * 添加 设备
+     */
+    public static final String ADD_MACHINE = "machine.saveMachine";
+
+
+    /**
+     * 修改 设备
+     */
+    public static final String UPDATE_MACHINE = "machine.updateMachine";
+    /**
+     * 删除 设备
+     */
+    public static final String DELETE_MACHINE = "machine.deleteMachine";
+
+
+    /**
+     * 查询 设备
+     */
+    public static final String LIST_MACHINES = "machine.listMachines";
+
+
+}