java110 5 lat temu
rodzic
commit
a609496d54
23 zmienionych plików z 1080 dodań i 40 usunięć
  1. 12 0
      java110-bean/src/main/java/com/java110/dto/contract/ContractDto.java
  2. 95 0
      java110-bean/src/main/java/com/java110/dto/contractAttr/ContractAttrDto.java
  3. 28 14
      java110-bean/src/main/java/com/java110/dto/contractType/ContractTypeDto.java
  4. 53 0
      java110-bean/src/main/java/com/java110/po/contractAttr/ContractAttrPo.java
  5. 106 0
      java110-db/src/main/resources/mapper/store/ContractAttrServiceDaoImplMapper.xml
  6. 21 21
      java110-generator/src/main/resources/newBack/template_1.json
  7. 33 0
      java110-generator/src/main/resources/newBack/template_userLogin.json
  8. 52 0
      java110-interface/src/main/java/com/java110/intf/store/IContractAttrInnerServiceSMO.java
  9. 99 1
      service-store/src/main/java/com/java110/store/api/ContractApi.java
  10. 2 1
      service-store/src/main/java/com/java110/store/bmo/contract/ISaveContractBMO.java
  11. 40 0
      service-store/src/main/java/com/java110/store/bmo/contract/impl/GetContractBMOImpl.java
  12. 71 3
      service-store/src/main/java/com/java110/store/bmo/contract/impl/SaveContractBMOImpl.java
  13. 19 0
      service-store/src/main/java/com/java110/store/bmo/contractAttr/IDeleteContractAttrBMO.java
  14. 19 0
      service-store/src/main/java/com/java110/store/bmo/contractAttr/IGetContractAttrBMO.java
  15. 19 0
      service-store/src/main/java/com/java110/store/bmo/contractAttr/ISaveContractAttrBMO.java
  16. 19 0
      service-store/src/main/java/com/java110/store/bmo/contractAttr/IUpdateContractAttrBMO.java
  17. 34 0
      service-store/src/main/java/com/java110/store/bmo/contractAttr/impl/DeleteContractAttrBMOImpl.java
  18. 44 0
      service-store/src/main/java/com/java110/store/bmo/contractAttr/impl/GetContractAttrBMOImpl.java
  19. 38 0
      service-store/src/main/java/com/java110/store/bmo/contractAttr/impl/SaveContractAttrBMOImpl.java
  20. 34 0
      service-store/src/main/java/com/java110/store/bmo/contractAttr/impl/UpdateContractAttrBMOImpl.java
  21. 61 0
      service-store/src/main/java/com/java110/store/dao/IContractAttrServiceDao.java
  22. 98 0
      service-store/src/main/java/com/java110/store/dao/impl/ContractAttrServiceDaoImpl.java
  23. 83 0
      service-store/src/main/java/com/java110/store/smo/impl/ContractAttrInnerServiceSMOImpl.java

+ 12 - 0
java110-bean/src/main/java/com/java110/dto/contract/ContractDto.java

@@ -1,9 +1,11 @@
 package com.java110.dto.contract;
 
 import com.java110.dto.PageDto;
+import com.java110.dto.contractAttr.ContractAttrDto;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @ClassName FloorDto
@@ -41,6 +43,8 @@ public class ContractDto extends PageDto implements Serializable {
 
     private String statusCd = "0";
 
+    private List<ContractAttrDto> attrs;
+
     public String getaLink() {
         return aLink;
     }
@@ -216,4 +220,12 @@ public class ContractDto extends PageDto implements Serializable {
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
     }
+
+    public List<ContractAttrDto> getAttrs() {
+        return attrs;
+    }
+
+    public void setAttrs(List<ContractAttrDto> attrs) {
+        this.attrs = attrs;
+    }
 }

+ 95 - 0
java110-bean/src/main/java/com/java110/dto/contractAttr/ContractAttrDto.java

@@ -0,0 +1,95 @@
+package com.java110.dto.contractAttr;
+
+import com.java110.dto.PageDto;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName FloorDto
+ * @Description 合同属性数据层封装
+ * @Author wuxw
+ * @Date 2019/4/24 8:52
+ * @Version 1.0
+ * add by wuxw 2019/4/24
+ **/
+public class ContractAttrDto extends PageDto implements Serializable {
+
+    private String attrId;
+    private String contractId;
+    private String[] contractIds;
+    private String specCd;
+    private String storeId;
+    private String value;
+
+
+    private Date createTime;
+
+    private String statusCd = "0";
+
+
+    public String getAttrId() {
+        return attrId;
+    }
+
+    public void setAttrId(String attrId) {
+        this.attrId = attrId;
+    }
+
+    public String getContractId() {
+        return contractId;
+    }
+
+    public void setContractId(String contractId) {
+        this.contractId = contractId;
+    }
+
+    public String getSpecCd() {
+        return specCd;
+    }
+
+    public void setSpecCd(String specCd) {
+        this.specCd = specCd;
+    }
+
+    public String getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(String storeId) {
+        this.storeId = storeId;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getStatusCd() {
+        return statusCd;
+    }
+
+    public void setStatusCd(String statusCd) {
+        this.statusCd = statusCd;
+    }
+
+    public String[] getContractIds() {
+        return contractIds;
+    }
+
+    public void setContractIds(String[] contractIds) {
+        this.contractIds = contractIds;
+    }
+}

+ 28 - 14
java110-bean/src/main/java/com/java110/dto/contractType/ContractTypeDto.java

@@ -1,6 +1,7 @@
 package com.java110.dto.contractType;
 
 import com.java110.dto.PageDto;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -13,12 +14,16 @@ import java.util.Date;
  * add by wuxw 2019/4/24
  **/
 public class ContractTypeDto extends PageDto implements Serializable {
-
+ //是否需要审核,1001 需要审核 2002 不需要审核 3003 需要admin审核  4004 需要 代理商审核
+    public static final String PROPERTY_AUDIT = "1001";
+    public static final String NO_AUDIT = "2002";
+    public static final String ADMIN_AUDIT = "3003";
+    public static final String PROXY_AUDIT = "4004";
     private String audit;
-private String typeName;
-private String remark;
-private String storeId;
-private String contractTypeId;
+    private String typeName;
+    private String remark;
+    private String storeId;
+    private String contractTypeId;
 
 
     private Date createTime;
@@ -29,31 +34,40 @@ private String contractTypeId;
     public String getAudit() {
         return audit;
     }
-public void setAudit(String audit) {
+
+    public void setAudit(String audit) {
         this.audit = audit;
     }
-public String getTypeName() {
+
+    public String getTypeName() {
         return typeName;
     }
-public void setTypeName(String typeName) {
+
+    public void setTypeName(String typeName) {
         this.typeName = typeName;
     }
-public String getRemark() {
+
+    public String getRemark() {
         return remark;
     }
-public void setRemark(String remark) {
+
+    public void setRemark(String remark) {
         this.remark = remark;
     }
-public String getStoreId() {
+
+    public String getStoreId() {
         return storeId;
     }
-public void setStoreId(String storeId) {
+
+    public void setStoreId(String storeId) {
         this.storeId = storeId;
     }
-public String getContractTypeId() {
+
+    public String getContractTypeId() {
         return contractTypeId;
     }
-public void setContractTypeId(String contractTypeId) {
+
+    public void setContractTypeId(String contractTypeId) {
         this.contractTypeId = contractTypeId;
     }
 

+ 53 - 0
java110-bean/src/main/java/com/java110/po/contractAttr/ContractAttrPo.java

@@ -0,0 +1,53 @@
+package com.java110.po.contractAttr;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ContractAttrPo implements Serializable {
+
+    private String attrId;
+private String contractId;
+private String specCd;
+private String statusCd = "0";
+private String storeId;
+private String value;
+public String getAttrId() {
+        return attrId;
+    }
+public void setAttrId(String attrId) {
+        this.attrId = attrId;
+    }
+public String getContractId() {
+        return contractId;
+    }
+public void setContractId(String contractId) {
+        this.contractId = contractId;
+    }
+public String getSpecCd() {
+        return specCd;
+    }
+public void setSpecCd(String specCd) {
+        this.specCd = specCd;
+    }
+public String getStatusCd() {
+        return statusCd;
+    }
+public void setStatusCd(String statusCd) {
+        this.statusCd = statusCd;
+    }
+public String getStoreId() {
+        return storeId;
+    }
+public void setStoreId(String storeId) {
+        this.storeId = storeId;
+    }
+public String getValue() {
+        return value;
+    }
+public void setValue(String value) {
+        this.value = value;
+    }
+
+
+
+}

+ 106 - 0
java110-db/src/main/resources/mapper/store/ContractAttrServiceDaoImplMapper.xml

@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="contractAttrServiceDaoImpl">
+
+
+
+
+
+    <!-- 保存合同属性信息 add by wuxw 2018-07-03 -->
+    <insert id="saveContractAttrInfo" parameterType="Map">
+        insert into contract_attr(
+attr_id,contract_id,spec_cd,store_id,value
+) values (
+#{attrId},#{contractId},#{specCd},#{storeId},#{value}
+)
+    </insert>
+
+
+
+    <!-- 查询合同属性信息 add by wuxw 2018-07-03 -->
+    <select id="getContractAttrInfo" parameterType="Map" resultType="Map">
+        select  t.attr_id,t.attr_id attrId,t.contract_id,t.contract_id contractId,t.spec_cd,t.spec_cd specCd,t.status_cd,t.status_cd statusCd,t.store_id,t.store_id storeId,t.value 
+from contract_attr t 
+where 1 =1 
+<if test="attrId !=null and attrId != ''">
+   and t.attr_id= #{attrId}
+</if> 
+<if test="contractId !=null and contractId != ''">
+   and t.contract_id= #{contractId}
+</if> 
+<if test="specCd !=null and specCd != ''">
+   and t.spec_cd= #{specCd}
+</if> 
+<if test="statusCd !=null and statusCd != ''">
+   and t.status_cd= #{statusCd}
+</if> 
+<if test="storeId !=null and storeId != ''">
+   and t.store_id= #{storeId}
+</if> 
+<if test="value !=null and value != ''">
+   and t.value= #{value}
+</if> 
+order by t.create_time desc
+<if test="page != -1 and page != null ">
+   limit #{page}, #{row}
+</if> 
+
+    </select>
+
+
+
+
+    <!-- 修改合同属性信息 add by wuxw 2018-07-03 -->
+    <update id="updateContractAttrInfo" parameterType="Map">
+        update  contract_attr t set t.status_cd = #{statusCd}
+<if test="newBId != null and newBId != ''">
+,t.b_id = #{newBId}
+</if> 
+<if test="contractId !=null and contractId != ''">
+, t.contract_id= #{contractId}
+</if> 
+<if test="specCd !=null and specCd != ''">
+, t.spec_cd= #{specCd}
+</if> 
+<if test="storeId !=null and storeId != ''">
+, t.store_id= #{storeId}
+</if> 
+<if test="value !=null and value != ''">
+, t.value= #{value}
+</if> 
+ where 1=1 <if test="attrId !=null and attrId != ''">
+and t.attr_id= #{attrId}
+</if> 
+
+    </update>
+
+    <!-- 查询合同属性数量 add by wuxw 2018-07-03 -->
+     <select id="queryContractAttrsCount" parameterType="Map" resultType="Map">
+        select  count(1) count 
+from contract_attr t 
+where 1 =1 
+<if test="attrId !=null and attrId != ''">
+   and t.attr_id= #{attrId}
+</if> 
+<if test="contractId !=null and contractId != ''">
+   and t.contract_id= #{contractId}
+</if> 
+<if test="specCd !=null and specCd != ''">
+   and t.spec_cd= #{specCd}
+</if> 
+<if test="statusCd !=null and statusCd != ''">
+   and t.status_cd= #{statusCd}
+</if> 
+<if test="storeId !=null and storeId != ''">
+   and t.store_id= #{storeId}
+</if> 
+<if test="value !=null and value != ''">
+   and t.value= #{value}
+</if> 
+
+
+     </select>
+
+</mapper>

+ 21 - 21
java110-generator/src/main/resources/newBack/template_1.json

@@ -1,33 +1,33 @@
 {
   "autoMove": true,
-  "id": "loginId",
-  "name": "userLogin",
-  "desc": "用户登录",
-  "shareParam": "loginId",
-  "shareColumn": "login_id",
-  "shareName": "user",
-  "tableName": "u_user_login",
+  "id": "attrId",
+  "name": "contractAttr",
+  "desc": "合同属性",
+  "shareParam": "storeId",
+  "shareColumn": "store_id",
+  "shareName": "store",
+  "tableName": "contract_attr",
   "param": {
-    "loginId": "login_id",
-    "userId": "user_id",
-    "userName": "user_name",
-    "password": "password",
-    "loginTime": "login_time",
-    "source": "source",
-    "token": "token"
+    "storeId": "store_id",
+    "contractId": "contract_id",
+    "attrId": "attr_id",
+    "specCd": "spec_cd",
+    "value": "value",
+    "statusCd": "status_cd"
   },
   "required": [
     {
-      "code": "userId",
-      "msg": "用户ID不能为空"
+      "code": "contractId",
+      "msg": "合同ID不能为空"
     },
     {
-      "code": "userName",
-      "msg": "用户名称不能为空"
+      "code": "storeId",
+      "msg": "商户ID不能为空"
     },
     {
-      "code": "password",
-      "msg": "密码不能为空"
+      "code": "specCd",
+      "msg": "用户规格不能为空"
     }
   ]
-}
+}
+

+ 33 - 0
java110-generator/src/main/resources/newBack/template_userLogin.json

@@ -0,0 +1,33 @@
+{
+  "autoMove": true,
+  "id": "loginId",
+  "name": "userLogin",
+  "desc": "用户登录",
+  "shareParam": "loginId",
+  "shareColumn": "login_id",
+  "shareName": "user",
+  "tableName": "u_user_login",
+  "param": {
+    "loginId": "login_id",
+    "userId": "user_id",
+    "userName": "user_name",
+    "password": "password",
+    "loginTime": "login_time",
+    "source": "source",
+    "token": "token"
+  },
+  "required": [
+    {
+      "code": "userId",
+      "msg": "用户ID不能为空"
+    },
+    {
+      "code": "userName",
+      "msg": "用户名称不能为空"
+    },
+    {
+      "code": "password",
+      "msg": "密码不能为空"
+    }
+  ]
+}

+ 52 - 0
java110-interface/src/main/java/com/java110/intf/store/IContractAttrInnerServiceSMO.java

@@ -0,0 +1,52 @@
+package com.java110.intf.store;
+
+import com.java110.config.feign.FeignConfiguration;
+import com.java110.dto.contractAttr.ContractAttrDto;
+import com.java110.po.contractAttr.ContractAttrPo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import java.util.List;
+
+/**
+ * @ClassName IContractAttrInnerServiceSMO
+ * @Description 合同属性接口类
+ * @Author wuxw
+ * @Date 2019/4/24 9:04
+ * @Version 1.0
+ * add by wuxw 2019/4/24
+ **/
+@FeignClient(name = "community-service", configuration = {FeignConfiguration.class})
+@RequestMapping("/contractAttrApi")
+public interface IContractAttrInnerServiceSMO {
+
+
+    @RequestMapping(value = "/saveContractAttr", method = RequestMethod.POST)
+    public int saveContractAttr(@RequestBody ContractAttrPo contractAttrPo);
+
+    @RequestMapping(value = "/updateContractAttr", method = RequestMethod.POST)
+    public int updateContractAttr(@RequestBody ContractAttrPo contractAttrPo);
+
+    @RequestMapping(value = "/deleteContractAttr", method = RequestMethod.POST)
+    public int deleteContractAttr(@RequestBody ContractAttrPo contractAttrPo);
+
+    /**
+     * <p>查询小区楼信息</p>
+     *
+     * @param contractAttrDto 数据对象分享
+     * @return ContractAttrDto 对象数据
+     */
+    @RequestMapping(value = "/queryContractAttrs", method = RequestMethod.POST)
+    List<ContractAttrDto> queryContractAttrs(@RequestBody ContractAttrDto contractAttrDto);
+
+    /**
+     * 查询<p>小区楼</p>总记录数
+     *
+     * @param contractAttrDto 数据对象分享
+     * @return 小区下的小区楼记录数
+     */
+    @RequestMapping(value = "/queryContractAttrsCount", method = RequestMethod.POST)
+    int queryContractAttrsCount(@RequestBody ContractAttrDto contractAttrDto);
+}

+ 99 - 1
service-store/src/main/java/com/java110/store/api/ContractApi.java

@@ -2,15 +2,21 @@ package com.java110.store.api;
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.dto.contract.ContractDto;
+import com.java110.dto.contractAttr.ContractAttrDto;
 import com.java110.dto.contractType.ContractTypeDto;
 import com.java110.dto.contractTypeSpec.ContractTypeSpecDto;
 import com.java110.po.contract.ContractPo;
+import com.java110.po.contractAttr.ContractAttrPo;
 import com.java110.po.contractType.ContractTypePo;
 import com.java110.po.contractTypeSpec.ContractTypeSpecPo;
 import com.java110.store.bmo.contract.IDeleteContractBMO;
 import com.java110.store.bmo.contract.IGetContractBMO;
 import com.java110.store.bmo.contract.ISaveContractBMO;
 import com.java110.store.bmo.contract.IUpdateContractBMO;
+import com.java110.store.bmo.contractAttr.IDeleteContractAttrBMO;
+import com.java110.store.bmo.contractAttr.IGetContractAttrBMO;
+import com.java110.store.bmo.contractAttr.ISaveContractAttrBMO;
+import com.java110.store.bmo.contractAttr.IUpdateContractAttrBMO;
 import com.java110.store.bmo.contractType.IDeleteContractTypeBMO;
 import com.java110.store.bmo.contractType.IGetContractTypeBMO;
 import com.java110.store.bmo.contractType.ISaveContractTypeBMO;
@@ -65,6 +71,16 @@ public class ContractApi {
     @Autowired
     private IGetContractTypeSpecBMO getContractTypeSpecBMOImpl;
 
+    @Autowired
+    private ISaveContractAttrBMO saveContractAttrBMOImpl;
+    @Autowired
+    private IUpdateContractAttrBMO updateContractAttrBMOImpl;
+    @Autowired
+    private IDeleteContractAttrBMO deleteContractAttrBMOImpl;
+
+    @Autowired
+    private IGetContractAttrBMO getContractAttrBMOImpl;
+
     /**
      * 微信保存消息模板
      *
@@ -93,7 +109,7 @@ public class ContractApi {
 
         ContractPo contractPo = BeanConvertUtil.covertBean(reqJson, ContractPo.class);
         contractPo.setStoreId(storeId);
-        return saveContractBMOImpl.save(contractPo);
+        return saveContractBMOImpl.save(contractPo,reqJson);
     }
 
     /**
@@ -337,4 +353,86 @@ public class ContractApi {
         contractTypeSpecDto.setContractTypeId(contractTypeId);
         return getContractTypeSpecBMOImpl.get(contractTypeSpecDto);
     }
+
+
+    /**
+     * 微信保存消息模板
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /contract/saveContractAttr
+     * @path /app/contract/saveContractAttr
+     */
+    @RequestMapping(value = "/saveContractAttr", method = RequestMethod.POST)
+    public ResponseEntity<String> saveContractAttr(@RequestBody JSONObject reqJson) {
+
+        Assert.hasKeyAndValue(reqJson, "contractId", "请求报文中未包含contractId");
+        Assert.hasKeyAndValue(reqJson, "storeId", "请求报文中未包含storeId");
+        Assert.hasKeyAndValue(reqJson, "specCd", "请求报文中未包含specCd");
+
+
+        ContractAttrPo contractAttrPo = BeanConvertUtil.covertBean(reqJson, ContractAttrPo.class);
+        return saveContractAttrBMOImpl.save(contractAttrPo);
+    }
+
+    /**
+     * 微信修改消息模板
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /contract/updateContractAttr
+     * @path /app/contract/updateContractAttr
+     */
+    @RequestMapping(value = "/updateContractAttr", method = RequestMethod.POST)
+    public ResponseEntity<String> updateContractAttr(@RequestBody JSONObject reqJson) {
+
+        Assert.hasKeyAndValue(reqJson, "contractId", "请求报文中未包含contractId");
+        Assert.hasKeyAndValue(reqJson, "storeId", "请求报文中未包含storeId");
+        Assert.hasKeyAndValue(reqJson, "specCd", "请求报文中未包含specCd");
+        Assert.hasKeyAndValue(reqJson, "attrId", "attrId不能为空");
+
+
+        ContractAttrPo contractAttrPo = BeanConvertUtil.covertBean(reqJson, ContractAttrPo.class);
+        return updateContractAttrBMOImpl.update(contractAttrPo);
+    }
+
+    /**
+     * 微信删除消息模板
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /contract/deleteContractAttr
+     * @path /app/contract/deleteContractAttr
+     */
+    @RequestMapping(value = "/deleteContractAttr", method = RequestMethod.POST)
+    public ResponseEntity<String> deleteContractAttr(@RequestBody JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "communityId", "小区ID不能为空");
+
+        Assert.hasKeyAndValue(reqJson, "attrId", "attrId不能为空");
+
+
+        ContractAttrPo contractAttrPo = BeanConvertUtil.covertBean(reqJson, ContractAttrPo.class);
+        return deleteContractAttrBMOImpl.delete(contractAttrPo);
+    }
+
+    /**
+     * 微信删除消息模板
+     *
+     * @param storeId 小区ID
+     * @return
+     * @serviceCode /contract/queryContractAttr
+     * @path /app/contract/queryContractAttr
+     */
+    @RequestMapping(value = "/queryContractAttr", method = RequestMethod.GET)
+    public ResponseEntity<String> queryContractAttr(@RequestHeader(value = "store-id") String storeId,
+                                                    @RequestParam(value = "page") int page,
+                                                    @RequestParam(value = "row") int row) {
+        ContractAttrDto contractAttrDto = new ContractAttrDto();
+        contractAttrDto.setPage(page);
+        contractAttrDto.setRow(row);
+        contractAttrDto.setStoreId(storeId);
+        return getContractAttrBMOImpl.get(contractAttrDto);
+    }
+
+
 }

+ 2 - 1
service-store/src/main/java/com/java110/store/bmo/contract/ISaveContractBMO.java

@@ -1,5 +1,6 @@
 package com.java110.store.bmo.contract;
 
+import com.alibaba.fastjson.JSONObject;
 import com.java110.po.contract.ContractPo;
 import org.springframework.http.ResponseEntity;
 
@@ -13,7 +14,7 @@ public interface ISaveContractBMO {
      * @param contractPo
      * @return
      */
-    ResponseEntity<String> save(ContractPo contractPo);
+    ResponseEntity<String> save(ContractPo contractPo, JSONObject reqJson);
 
 
 }

+ 40 - 0
service-store/src/main/java/com/java110/store/bmo/contract/impl/GetContractBMOImpl.java

@@ -1,6 +1,8 @@
 package com.java110.store.bmo.contract.impl;
 
 import com.java110.dto.contract.ContractDto;
+import com.java110.dto.contractAttr.ContractAttrDto;
+import com.java110.intf.store.IContractAttrInnerServiceSMO;
 import com.java110.intf.store.IContractInnerServiceSMO;
 import com.java110.store.bmo.contract.IGetContractBMO;
 import com.java110.vo.ResultVo;
@@ -18,6 +20,9 @@ public class GetContractBMOImpl implements IGetContractBMO {
     @Autowired
     private IContractInnerServiceSMO contractInnerServiceSMOImpl;
 
+    @Autowired
+    private IContractAttrInnerServiceSMO contractAttrInnerServiceSMOImpl;
+
     /**
      * @param contractDto
      * @return 订单服务能够接受的报文
@@ -30,6 +35,7 @@ public class GetContractBMOImpl implements IGetContractBMO {
         List<ContractDto> contractDtos = null;
         if (count > 0) {
             contractDtos = contractInnerServiceSMOImpl.queryContracts(contractDto);
+            refreshAttr(contractDtos);
         } else {
             contractDtos = new ArrayList<>();
         }
@@ -41,4 +47,38 @@ public class GetContractBMOImpl implements IGetContractBMO {
         return responseEntity;
     }
 
+    /**
+     * 属性属性
+     *
+     * @param contractDtos
+     */
+    private void refreshAttr(List<ContractDto> contractDtos) {
+        List<String> contractIds = new ArrayList<>();
+        for (ContractDto contractDto : contractDtos) {
+            contractIds.add(contractDto.getContractId());
+        }
+
+
+        if (contractIds.size() < 1) {
+            return;
+        }
+
+        ContractAttrDto contractAttrDto = new ContractAttrDto();
+        contractAttrDto.setContractIds(contractIds.toArray(new String[contractIds.size()]));
+        List<ContractAttrDto> contractAttrDtos = contractAttrInnerServiceSMOImpl.queryContractAttrs(contractAttrDto);
+
+        List<ContractAttrDto> attrs = null;
+        for (ContractDto contractDto : contractDtos) {
+            attrs = new ArrayList<>();
+            for (ContractAttrDto tmpContractAttrDto : contractAttrDtos) {
+                if (contractDto.getContractId().equals(tmpContractAttrDto.getContractId())) {
+                    attrs.add(tmpContractAttrDto);
+                }
+            }
+            contractDto.setAttrs(attrs);
+        }
+
+
+    }
+
 }

+ 71 - 3
service-store/src/main/java/com/java110/store/bmo/contract/impl/SaveContractBMOImpl.java

@@ -1,21 +1,36 @@
 package com.java110.store.bmo.contract.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.contractType.ContractTypeDto;
+import com.java110.intf.store.IContractAttrInnerServiceSMO;
 import com.java110.intf.store.IContractInnerServiceSMO;
+import com.java110.intf.store.IContractTypeInnerServiceSMO;
 import com.java110.po.contract.ContractPo;
+import com.java110.po.contractAttr.ContractAttrPo;
 import com.java110.store.bmo.contract.ISaveContractBMO;
+import com.java110.utils.util.Assert;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service("saveContractBMOImpl")
 public class SaveContractBMOImpl implements ISaveContractBMO {
 
     @Autowired
     private IContractInnerServiceSMO contractInnerServiceSMOImpl;
 
+    @Autowired
+    private IContractAttrInnerServiceSMO contractAttrInnerServiceSMOImpl;
+
+    @Autowired
+    private IContractTypeInnerServiceSMO contractTypeInnerServiceSMOImpl;
+
     /**
      * 添加小区信息
      *
@@ -23,16 +38,69 @@ public class SaveContractBMOImpl implements ISaveContractBMO {
      * @return 订单服务能够接受的报文
      */
     @Java110Transactional
-    public ResponseEntity<String> save(ContractPo contractPo) {
+    public ResponseEntity<String> save(ContractPo contractPo, JSONObject reqJson) {
+
+        //查询 合同是否需要审核
+        ContractTypeDto contractTypeDto = new ContractTypeDto();
+        contractTypeDto.setContractTypeId(contractPo.getContractType());
+        contractTypeDto.setStoreId(contractPo.getStoreId());
+        List<ContractTypeDto> contractTypeDtos = contractTypeInnerServiceSMOImpl.queryContractTypes(contractTypeDto);
+
+        Assert.listOnlyOne(contractTypeDtos, "查询合同类型失败");
+
+        String audit = contractTypeDtos.get(0).getAudit();
+
+        if (ContractTypeDto.NO_AUDIT.equals(audit)) {
+            contractPo.setState("22");
+        } else {
+            contractPo.setState("11");
+        }
 
         contractPo.setContractId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_contractId));
         int flag = contractInnerServiceSMOImpl.saveContract(contractPo);
 
-        if (flag > 0) {
+        if (flag < 0) {
+            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
+
+        }
+
+        if (!reqJson.containsKey("contractTypeSpecs")) {
             return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");
         }
 
-        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
+        JSONArray contractTypeSpecs = reqJson.getJSONArray("contractTypeSpecs");
+
+        if (contractTypeSpecs.size() < 1) {
+            return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");
+        }
+
+        for (int typeSpecIndex = 0; typeSpecIndex < contractTypeSpecs.size(); typeSpecIndex++) {
+            saveContractAttr(contractTypeSpecs.getJSONObject(typeSpecIndex), contractPo);
+        }
+
+
+        return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");
+
+    }
+
+    /**
+     * 保存合同属性
+     *
+     * @param jsonObject
+     */
+    private void saveContractAttr(JSONObject jsonObject, ContractPo contractPo) {
+
+        ContractAttrPo contractAttrPo = new ContractAttrPo();
+        contractAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+        contractAttrPo.setContractId(contractPo.getContractId());
+        contractAttrPo.setSpecCd(jsonObject.getString("specCd"));
+        contractAttrPo.setValue(jsonObject.getString("value"));
+        contractAttrPo.setStoreId(contractPo.getStoreId());
+        int count = contractAttrInnerServiceSMOImpl.saveContractAttr(contractAttrPo);
+
+        if (count < 1) {
+            throw new IllegalArgumentException("保存属性失败");
+        }
     }
 
 }

+ 19 - 0
service-store/src/main/java/com/java110/store/bmo/contractAttr/IDeleteContractAttrBMO.java

@@ -0,0 +1,19 @@
+package com.java110.store.bmo.contractAttr;
+
+import com.java110.po.contractAttr.ContractAttrPo;
+import org.springframework.http.ResponseEntity;
+
+public interface IDeleteContractAttrBMO {
+
+
+    /**
+     * 修改合同属性
+     * add by wuxw
+     *
+     * @param contractAttrPo
+     * @return
+     */
+    ResponseEntity<String> delete(ContractAttrPo contractAttrPo);
+
+
+}

+ 19 - 0
service-store/src/main/java/com/java110/store/bmo/contractAttr/IGetContractAttrBMO.java

@@ -0,0 +1,19 @@
+package com.java110.store.bmo.contractAttr;
+
+import com.java110.dto.contractAttr.ContractAttrDto;
+import org.springframework.http.ResponseEntity;
+
+public interface IGetContractAttrBMO {
+
+
+    /**
+     * 查询合同属性
+     * add by wuxw
+     *
+     * @param contractAttrDto
+     * @return
+     */
+    ResponseEntity<String> get(ContractAttrDto contractAttrDto);
+
+
+}

+ 19 - 0
service-store/src/main/java/com/java110/store/bmo/contractAttr/ISaveContractAttrBMO.java

@@ -0,0 +1,19 @@
+package com.java110.store.bmo.contractAttr;
+
+import com.java110.po.contractAttr.ContractAttrPo;
+import org.springframework.http.ResponseEntity;
+
+public interface ISaveContractAttrBMO {
+
+
+    /**
+     * 添加合同属性
+     * add by wuxw
+     *
+     * @param contractAttrPo
+     * @return
+     */
+    ResponseEntity<String> save(ContractAttrPo contractAttrPo);
+
+
+}

+ 19 - 0
service-store/src/main/java/com/java110/store/bmo/contractAttr/IUpdateContractAttrBMO.java

@@ -0,0 +1,19 @@
+package com.java110.store.bmo.contractAttr;
+
+import com.java110.po.contractAttr.ContractAttrPo;
+import org.springframework.http.ResponseEntity;
+
+public interface IUpdateContractAttrBMO {
+
+
+    /**
+     * 修改合同属性
+     * add by wuxw
+     *
+     * @param contractAttrPo
+     * @return
+     */
+    ResponseEntity<String> update(ContractAttrPo contractAttrPo);
+
+
+}

+ 34 - 0
service-store/src/main/java/com/java110/store/bmo/contractAttr/impl/DeleteContractAttrBMOImpl.java

@@ -0,0 +1,34 @@
+package com.java110.store.bmo.contractAttr.impl;
+
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.intf.store.IContractAttrInnerServiceSMO;
+import com.java110.po.contractAttr.ContractAttrPo;
+import com.java110.store.bmo.contractAttr.IDeleteContractAttrBMO;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+
+@Service("deleteContractAttrBMOImpl")
+public class DeleteContractAttrBMOImpl implements IDeleteContractAttrBMO {
+
+    @Autowired
+    private IContractAttrInnerServiceSMO contractAttrInnerServiceSMOImpl;
+
+    /**
+     * @param contractAttrPo 数据
+     * @return 订单服务能够接受的报文
+     */
+    @Java110Transactional
+    public ResponseEntity<String> delete(ContractAttrPo contractAttrPo) {
+
+        int flag = contractAttrInnerServiceSMOImpl.deleteContractAttr(contractAttrPo);
+
+        if (flag > 0) {
+            return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");
+        }
+
+        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
+    }
+
+}

+ 44 - 0
service-store/src/main/java/com/java110/store/bmo/contractAttr/impl/GetContractAttrBMOImpl.java

@@ -0,0 +1,44 @@
+package com.java110.store.bmo.contractAttr.impl;
+
+import com.java110.dto.contractAttr.ContractAttrDto;
+import com.java110.intf.store.IContractAttrInnerServiceSMO;
+import com.java110.store.bmo.contractAttr.IGetContractAttrBMO;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service("getContractAttrBMOImpl")
+public class GetContractAttrBMOImpl implements IGetContractAttrBMO {
+
+    @Autowired
+    private IContractAttrInnerServiceSMO contractAttrInnerServiceSMOImpl;
+
+    /**
+     * @param contractAttrDto
+     * @return 订单服务能够接受的报文
+     */
+    public ResponseEntity<String> get(ContractAttrDto contractAttrDto) {
+
+
+        int count = contractAttrInnerServiceSMOImpl.queryContractAttrsCount(contractAttrDto);
+
+        List<ContractAttrDto> contractAttrDtos = null;
+        if (count > 0) {
+            contractAttrDtos = contractAttrInnerServiceSMOImpl.queryContractAttrs(contractAttrDto);
+        } else {
+            contractAttrDtos = new ArrayList<>();
+        }
+
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) contractAttrDto.getRow()), count, contractAttrDtos);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        return responseEntity;
+    }
+
+}

+ 38 - 0
service-store/src/main/java/com/java110/store/bmo/contractAttr/impl/SaveContractAttrBMOImpl.java

@@ -0,0 +1,38 @@
+package com.java110.store.bmo.contractAttr.impl;
+
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.intf.store.IContractAttrInnerServiceSMO;
+import com.java110.po.contractAttr.ContractAttrPo;
+import com.java110.store.bmo.contractAttr.ISaveContractAttrBMO;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+
+@Service("saveContractAttrBMOImpl")
+public class SaveContractAttrBMOImpl implements ISaveContractAttrBMO {
+
+    @Autowired
+    private IContractAttrInnerServiceSMO contractAttrInnerServiceSMOImpl;
+
+    /**
+     * 添加小区信息
+     *
+     * @param contractAttrPo
+     * @return 订单服务能够接受的报文
+     */
+    @Java110Transactional
+    public ResponseEntity<String> save(ContractAttrPo contractAttrPo) {
+
+        contractAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+        int flag = contractAttrInnerServiceSMOImpl.saveContractAttr(contractAttrPo);
+
+        if (flag > 0) {
+            return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");
+        }
+
+        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
+    }
+
+}

+ 34 - 0
service-store/src/main/java/com/java110/store/bmo/contractAttr/impl/UpdateContractAttrBMOImpl.java

@@ -0,0 +1,34 @@
+package com.java110.store.bmo.contractAttr.impl;
+
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.intf.store.IContractAttrInnerServiceSMO;
+import com.java110.po.contractAttr.ContractAttrPo;
+import com.java110.store.bmo.contractAttr.IUpdateContractAttrBMO;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+
+@Service("updateContractAttrBMOImpl")
+public class UpdateContractAttrBMOImpl implements IUpdateContractAttrBMO {
+
+    @Autowired
+    private IContractAttrInnerServiceSMO contractAttrInnerServiceSMOImpl;
+
+    /**
+     * @param contractAttrPo
+     * @return 订单服务能够接受的报文
+     */
+    @Java110Transactional
+    public ResponseEntity<String> update(ContractAttrPo contractAttrPo) {
+
+        int flag = contractAttrInnerServiceSMOImpl.updateContractAttr(contractAttrPo);
+
+        if (flag > 0) {
+            return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");
+        }
+
+        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
+    }
+
+}

+ 61 - 0
service-store/src/main/java/com/java110/store/dao/IContractAttrServiceDao.java

@@ -0,0 +1,61 @@
+package com.java110.store.dao;
+
+
+import com.java110.utils.exception.DAOException;
+import com.java110.entity.merchant.BoMerchant;
+import com.java110.entity.merchant.BoMerchantAttr;
+import com.java110.entity.merchant.Merchant;
+import com.java110.entity.merchant.MerchantAttr;
+
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 合同属性组件内部之间使用,没有给外围系统提供服务能力
+ * 合同属性服务接口类,要求全部以字符串传输,方便微服务化
+ * 新建客户,修改客户,删除客户,查询客户等功能
+ *
+ * Created by wuxw on 2016/12/27.
+ */
+public interface IContractAttrServiceDao {
+
+
+    /**
+     * 保存 合同属性信息
+     * @param info
+     * @throws DAOException DAO异常
+     */
+    void saveContractAttrInfo(Map info) throws DAOException;
+
+
+
+
+    /**
+     * 查询合同属性信息(instance过程)
+     * 根据bId 查询合同属性信息
+     * @param info bId 信息
+     * @return 合同属性信息
+     * @throws DAOException DAO异常
+     */
+    List<Map> getContractAttrInfo(Map info) throws DAOException;
+
+
+
+    /**
+     * 修改合同属性信息
+     * @param info 修改信息
+     * @throws DAOException DAO异常
+     */
+    void updateContractAttrInfo(Map info) throws DAOException;
+
+
+    /**
+     * 查询合同属性总数
+     *
+     * @param info 合同属性信息
+     * @return 合同属性数量
+     */
+    int queryContractAttrsCount(Map info);
+
+}

+ 98 - 0
service-store/src/main/java/com/java110/store/dao/impl/ContractAttrServiceDaoImpl.java

@@ -0,0 +1,98 @@
+package com.java110.store.dao.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.exception.DAOException;
+import com.java110.utils.util.DateUtil;
+import com.java110.core.base.dao.BaseServiceDao;
+import com.java110.store.dao.IContractAttrServiceDao;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 合同属性服务 与数据库交互
+ * Created by wuxw on 2017/4/5.
+ */
+@Service("contractAttrServiceDaoImpl")
+//@Transactional
+public class ContractAttrServiceDaoImpl extends BaseServiceDao implements IContractAttrServiceDao {
+
+    private static Logger logger = LoggerFactory.getLogger(ContractAttrServiceDaoImpl.class);
+
+
+
+
+
+    /**
+     * 保存合同属性信息 到 instance
+     * @param info   bId 信息
+     * @throws DAOException DAO异常
+     */
+    @Override
+    public void saveContractAttrInfo(Map info) throws DAOException {
+        logger.debug("保存合同属性信息Instance 入参 info : {}",info);
+
+        int saveFlag = sqlSessionTemplate.insert("contractAttrServiceDaoImpl.saveContractAttrInfo",info);
+
+        if(saveFlag < 1){
+            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存合同属性信息Instance数据失败:"+ JSONObject.toJSONString(info));
+        }
+    }
+
+
+    /**
+     * 查询合同属性信息(instance)
+     * @param info bId 信息
+     * @return List<Map>
+     * @throws DAOException DAO异常
+     */
+    @Override
+    public List<Map> getContractAttrInfo(Map info) throws DAOException {
+        logger.debug("查询合同属性信息 入参 info : {}",info);
+
+        List<Map> businessContractAttrInfos = sqlSessionTemplate.selectList("contractAttrServiceDaoImpl.getContractAttrInfo",info);
+
+        return businessContractAttrInfos;
+    }
+
+
+    /**
+     * 修改合同属性信息
+     * @param info 修改信息
+     * @throws DAOException DAO异常
+     */
+    @Override
+    public void updateContractAttrInfo(Map info) throws DAOException {
+        logger.debug("修改合同属性信息Instance 入参 info : {}",info);
+
+        int saveFlag = sqlSessionTemplate.update("contractAttrServiceDaoImpl.updateContractAttrInfo",info);
+
+        if(saveFlag < 1){
+            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"修改合同属性信息Instance数据失败:"+ JSONObject.toJSONString(info));
+        }
+    }
+
+     /**
+     * 查询合同属性数量
+     * @param info 合同属性信息
+     * @return 合同属性数量
+     */
+    @Override
+    public int queryContractAttrsCount(Map info) {
+        logger.debug("查询合同属性数据 入参 info : {}",info);
+
+        List<Map> businessContractAttrInfos = sqlSessionTemplate.selectList("contractAttrServiceDaoImpl.queryContractAttrsCount", info);
+        if (businessContractAttrInfos.size() < 1) {
+            return 0;
+        }
+
+        return Integer.parseInt(businessContractAttrInfos.get(0).get("count").toString());
+    }
+
+
+}

+ 83 - 0
service-store/src/main/java/com/java110/store/smo/impl/ContractAttrInnerServiceSMOImpl.java

@@ -0,0 +1,83 @@
+package com.java110.store.smo.impl;
+
+
+import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.dto.PageDto;
+import com.java110.dto.contractAttr.ContractAttrDto;
+import com.java110.intf.store.IContractAttrInnerServiceSMO;
+import com.java110.po.contractAttr.ContractAttrPo;
+import com.java110.store.dao.IContractAttrServiceDao;
+import com.java110.utils.util.BeanConvertUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @ClassName FloorInnerServiceSMOImpl
+ * @Description 合同属性内部服务实现类
+ * @Author wuxw
+ * @Date 2019/4/24 9:20
+ * @Version 1.0
+ * add by wuxw 2019/4/24
+ **/
+@RestController
+public class ContractAttrInnerServiceSMOImpl extends BaseServiceSMO implements IContractAttrInnerServiceSMO {
+
+    @Autowired
+    private IContractAttrServiceDao contractAttrServiceDaoImpl;
+
+
+    @Override
+    public int saveContractAttr(@RequestBody ContractAttrPo contractAttrPo) {
+        int saveFlag = 1;
+        contractAttrServiceDaoImpl.saveContractAttrInfo(BeanConvertUtil.beanCovertMap(contractAttrPo));
+        return saveFlag;
+    }
+
+    @Override
+    public int updateContractAttr(@RequestBody ContractAttrPo contractAttrPo) {
+        int saveFlag = 1;
+        contractAttrServiceDaoImpl.updateContractAttrInfo(BeanConvertUtil.beanCovertMap(contractAttrPo));
+        return saveFlag;
+    }
+
+    @Override
+    public int deleteContractAttr(@RequestBody ContractAttrPo contractAttrPo) {
+        int saveFlag = 1;
+        contractAttrPo.setStatusCd("1");
+        contractAttrServiceDaoImpl.updateContractAttrInfo(BeanConvertUtil.beanCovertMap(contractAttrPo));
+        return saveFlag;
+    }
+
+    @Override
+    public List<ContractAttrDto> queryContractAttrs(@RequestBody ContractAttrDto contractAttrDto) {
+
+        //校验是否传了 分页信息
+
+        int page = contractAttrDto.getPage();
+
+        if (page != PageDto.DEFAULT_PAGE) {
+            contractAttrDto.setPage((page - 1) * contractAttrDto.getRow());
+        }
+
+        List<ContractAttrDto> contractAttrs = BeanConvertUtil.covertBeanList(contractAttrServiceDaoImpl.getContractAttrInfo(BeanConvertUtil.beanCovertMap(contractAttrDto)), ContractAttrDto.class);
+
+        return contractAttrs;
+    }
+
+
+    @Override
+    public int queryContractAttrsCount(@RequestBody ContractAttrDto contractAttrDto) {
+        return contractAttrServiceDaoImpl.queryContractAttrsCount(BeanConvertUtil.beanCovertMap(contractAttrDto));
+    }
+
+    public IContractAttrServiceDao getContractAttrServiceDaoImpl() {
+        return contractAttrServiceDaoImpl;
+    }
+
+    public void setContractAttrServiceDaoImpl(IContractAttrServiceDao contractAttrServiceDaoImpl) {
+        this.contractAttrServiceDaoImpl = contractAttrServiceDaoImpl;
+    }
+}