Explorar o código

开发首页欠费信息

wuxw %!s(int64=7) %!d(string=hai) anos
pai
achega
f02ebf82e4
Modificáronse 20 ficheiros con 580 adicións e 40 borrados
  1. 223 0
      Api/src/main/java/com/java110/api/listener/fee/QueryArrearsFeeListener.java
  2. 8 0
      UserService/src/main/java/com/java110/user/dao/IOwnerServiceDao.java
  3. 9 0
      UserService/src/main/java/com/java110/user/dao/impl/OwnerServiceDaoImpl.java
  4. 5 0
      UserService/src/main/java/com/java110/user/smo/impl/OwnerInnerServiceSMOImpl.java
  5. 36 0
      WebService/src/main/java/com/java110/web/components/fee/ListArrearsComponent.java
  6. 6 0
      WebService/src/main/java/com/java110/web/smo/IFeeServiceSMO.java
  7. 38 0
      WebService/src/main/java/com/java110/web/smo/impl/FeeServiceSMOImpl.java
  8. 12 26
      WebService/src/main/resources/components/index-arrears/indexArrears.html
  9. 14 9
      WebService/src/main/resources/components/index-arrears/indexArrears.js
  10. 20 0
      java110-bean/src/main/java/com/java110/dto/FeeDto.java
  11. 19 0
      java110-bean/src/main/java/com/java110/dto/OwnerDto.java
  12. 10 0
      java110-bean/src/main/java/com/java110/dto/RoomDto.java
  13. 80 0
      java110-bean/src/main/java/com/java110/vo/api/ApiArrearsFeeDataVo.java
  14. 28 0
      java110-bean/src/main/java/com/java110/vo/api/ApiArrearsFeeVo.java
  15. 6 0
      java110-common/src/main/java/com/java110/common/constant/FeeTypeConstant.java
  16. 3 0
      java110-common/src/main/java/com/java110/common/constant/ServiceCodeConstant.java
  17. 9 0
      java110-core/src/main/java/com/java110/core/smo/owner/IOwnerInnerServiceSMO.java
  18. 22 4
      java110-db/src/main/resources/mapper/fee/FeeServiceDaoImplMapper.xml
  19. 24 0
      java110-db/src/main/resources/mapper/owner/OwnerServiceDaoImplMapper.xml
  20. 8 1
      java110-db/src/main/resources/mapper/room/RoomServiceDaoImplMapper.xml

+ 223 - 0
Api/src/main/java/com/java110/api/listener/fee/QueryArrearsFeeListener.java

@@ -0,0 +1,223 @@
+package com.java110.api.listener.fee;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiDataFlowListener;
+import com.java110.common.constant.FeeTypeConstant;
+import com.java110.common.constant.ResponseConstant;
+import com.java110.common.constant.ServiceCodeConstant;
+import com.java110.common.exception.ListenerExecuteException;
+import com.java110.common.util.Assert;
+import com.java110.common.util.BeanConvertUtil;
+import com.java110.common.util.DateUtil;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.smo.fee.IFeeInnerServiceSMO;
+import com.java110.core.smo.floor.IFloorInnerServiceSMO;
+import com.java110.core.smo.owner.IOwnerInnerServiceSMO;
+import com.java110.core.smo.owner.IOwnerRoomRelInnerServiceSMO;
+import com.java110.core.smo.room.IRoomInnerServiceSMO;
+import com.java110.core.smo.unit.IUnitInnerServiceSMO;
+import com.java110.dto.FeeDto;
+import com.java110.dto.OwnerDto;
+import com.java110.dto.OwnerRoomRelDto;
+import com.java110.dto.RoomDto;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.vo.api.ApiArrearsFeeDataVo;
+import com.java110.vo.api.ApiArrearsFeeVo;
+import com.java110.vo.api.ApiFeeVo;
+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;
+
+/**
+ * @ClassName FloorDto
+ * @Description 小区楼数据层侦听类
+ * @Author wuxw
+ * @Date 2019/4/24 8:52
+ * @Version 1.0
+ * add by wuxw 2019/4/24
+ **/
+@Java110Listener("queryArrearsFee")
+public class QueryArrearsFeeListener extends AbstractServiceApiDataFlowListener {
+
+    @Autowired
+    private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
+    @Autowired
+    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
+    @Autowired
+    private IUnitInnerServiceSMO unitInnerServiceSMOImpl;
+
+    @Autowired
+    private IFloorInnerServiceSMO floorInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_QUERY_ARREARS_FEE;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.GET;
+    }
+
+    /**
+     * 业务层数据处理
+     *
+     * @param event 时间对象
+     */
+    @Override
+    public void soService(ServiceDataFlowEvent event) {
+        DataFlowContext dataFlowContext = event.getDataFlowContext();
+        //获取请求数据
+        JSONObject reqJson = dataFlowContext.getReqJson();
+        validateFeeData(reqJson);
+        FeeDto feeDtoParamIn = BeanConvertUtil.covertBean(reqJson, FeeDto.class);
+        feeDtoParamIn.setArrearsEndTime(DateUtil.getCurrentDate());
+
+        //车位时处理为 查询多个
+        if(FeeTypeConstant.FEE_TYPE_HIRE_PARKING_SPACE.equals(feeDtoParamIn.getFeeTypeCd())){
+            feeDtoParamIn.setFeeTypeCd("");
+            feeDtoParamIn.setFeeTypeCds(new String[]{FeeTypeConstant.FEE_TYPE_HIRE_DOWN_PARKING_SPACE,
+                                                     FeeTypeConstant.FEE_TYPE_HIRE_UP_PARKING_SPACE});
+        }
+
+        int feeCount = feeInnerServiceSMOImpl.queryFeesCount(feeDtoParamIn);
+        ResponseEntity<String> responseEntity = null;
+        if (feeCount == 0) {
+            responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(new ApiArrearsFeeVo()), HttpStatus.OK);
+            dataFlowContext.setResponseEntity(responseEntity);
+            return;
+        }
+
+        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDtoParamIn);
+
+        List<ApiArrearsFeeDataVo> apiFeeVo = BeanConvertUtil.covertBeanList(feeDtos, ApiArrearsFeeDataVo.class);
+
+        String[] objIds = this.getObjIds(feeDtos);
+
+        if (FeeTypeConstant.FEE_TYPE_PROPERTY.equals(feeDtoParamIn.getFeeTypeCd())) {
+
+            OwnerDto ownerDto = new OwnerDto();
+            ownerDto.setRoomIds(objIds);
+            List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto);
+            freshRoomAndOwnerData(apiFeeVo, ownerDtos);
+        } else {
+
+        }
+
+
+        responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiFeeVo), HttpStatus.OK);
+
+
+        dataFlowContext.setResponseEntity(responseEntity);
+    }
+
+    /**
+     * 刷新 房间号
+     *
+     * @param apiFeeVos 费用出参对象
+     * @param ownerDtos  房屋信息
+     */
+    private void freshRoomAndOwnerData(List<ApiArrearsFeeDataVo> apiFeeVos, List<OwnerDto> ownerDtos) {
+
+        for (ApiArrearsFeeDataVo apiFeeVo : apiFeeVos) {
+            for (OwnerDto ownerDto : ownerDtos) {
+                if(apiFeeVo.getPayerObjId().equals(ownerDto.getRoomId())){
+                    apiFeeVo.setNum(ownerDto.getRoomNum());
+                    apiFeeVo.setOwnerName(ownerDto.getName());
+                    apiFeeVo.setTel(ownerDto.getLink());
+                }
+            }
+        }
+    }
+
+    /**
+     * 校验查询条件是否满足条件
+     *
+     * @param reqJson 包含查询条件
+     */
+    private void validateFeeData(JSONObject reqJson) {
+        Assert.jsonObjectHaveKey(reqJson, "communityId", "请求中未包含communityId信息");
+        Assert.jsonObjectHaveKey(reqJson, "feeTypeCd", "请求中未包含feeTypeCd信息");
+
+    }
+
+    private String[] getObjIds(List<FeeDto> feeDtos) {
+        List<String> objIds = new ArrayList<String>();
+        for (FeeDto feeDto : feeDtos) {
+            objIds.add(feeDto.getPayerObjId());
+        }
+
+        return objIds.toArray(new String[objIds.size()]);
+    }
+
+    @Override
+    public int getOrder() {
+        return super.DEFAULT_ORDER;
+    }
+
+    public IFeeInnerServiceSMO getFeeInnerServiceSMOImpl() {
+        return feeInnerServiceSMOImpl;
+    }
+
+    public void setFeeInnerServiceSMOImpl(IFeeInnerServiceSMO feeInnerServiceSMOImpl) {
+        this.feeInnerServiceSMOImpl = feeInnerServiceSMOImpl;
+    }
+
+
+    public IRoomInnerServiceSMO getRoomInnerServiceSMOImpl() {
+        return roomInnerServiceSMOImpl;
+    }
+
+    public void setRoomInnerServiceSMOImpl(IRoomInnerServiceSMO roomInnerServiceSMOImpl) {
+        this.roomInnerServiceSMOImpl = roomInnerServiceSMOImpl;
+    }
+
+
+    public IFloorInnerServiceSMO getFloorInnerServiceSMOImpl() {
+        return floorInnerServiceSMOImpl;
+    }
+
+    public void setFloorInnerServiceSMOImpl(IFloorInnerServiceSMO floorInnerServiceSMOImpl) {
+        this.floorInnerServiceSMOImpl = floorInnerServiceSMOImpl;
+    }
+
+    public IUnitInnerServiceSMO getUnitInnerServiceSMOImpl() {
+        return unitInnerServiceSMOImpl;
+    }
+
+    public void setUnitInnerServiceSMOImpl(IUnitInnerServiceSMO unitInnerServiceSMOImpl) {
+        this.unitInnerServiceSMOImpl = unitInnerServiceSMOImpl;
+    }
+
+    public IOwnerInnerServiceSMO getOwnerInnerServiceSMOImpl() {
+        return ownerInnerServiceSMOImpl;
+    }
+
+    public void setOwnerInnerServiceSMOImpl(IOwnerInnerServiceSMO ownerInnerServiceSMOImpl) {
+        this.ownerInnerServiceSMOImpl = ownerInnerServiceSMOImpl;
+    }
+
+    public IOwnerRoomRelInnerServiceSMO getOwnerRoomRelInnerServiceSMOImpl() {
+        return ownerRoomRelInnerServiceSMOImpl;
+    }
+
+    public void setOwnerRoomRelInnerServiceSMOImpl(IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl) {
+        this.ownerRoomRelInnerServiceSMOImpl = ownerRoomRelInnerServiceSMOImpl;
+    }
+
+
+}

+ 8 - 0
UserService/src/main/java/com/java110/user/dao/IOwnerServiceDao.java

@@ -98,4 +98,12 @@ public interface IOwnerServiceDao {
      */
      int queryNoEnterRoomOwnerCount(Map info);
 
+    /**
+     * 根据房屋查询业主信息
+     * @param info 房屋信息
+     * @return 业主信息
+     * @throws DAOException 异常信息
+     */
+     List<Map> queryOwnersByRoom(Map info) throws DAOException;
+
 }

+ 9 - 0
UserService/src/main/java/com/java110/user/dao/impl/OwnerServiceDaoImpl.java

@@ -176,5 +176,14 @@ public class OwnerServiceDaoImpl extends BaseServiceDao implements IOwnerService
         return Integer.parseInt(businessOwnerInfos.get(0).get("count").toString());
     }
 
+    @Override
+    public List<Map> queryOwnersByRoom(Map info) throws DAOException {
+        logger.debug("queryOwnersByRoom 入参 info : {}", info);
+
+        List<Map> businessOwnerInfos = sqlSessionTemplate.selectList("ownerServiceDaoImpl.queryOwnersByRoom", info);
+
+        return businessOwnerInfos;
+    }
+
 
 }

+ 5 - 0
UserService/src/main/java/com/java110/user/smo/impl/OwnerInnerServiceSMOImpl.java

@@ -200,6 +200,11 @@ public class OwnerInnerServiceSMOImpl extends BaseServiceSMO implements IOwnerIn
         return ownerServiceDaoImpl.queryNoEnterRoomOwnerCount(BeanConvertUtil.beanCovertMap(ownerDto));
     }
 
+    @Override
+    public List<OwnerDto> queryOwnersByRoom(OwnerDto ownerDto) {
+        return BeanConvertUtil.covertBeanList(ownerServiceDaoImpl.queryOwnersByRoom(BeanConvertUtil.beanCovertMap(ownerDto)),OwnerDto.class);
+    }
+
     public IUserInnerServiceSMO getUserInnerServiceSMOImpl() {
         return userInnerServiceSMOImpl;
     }

+ 36 - 0
WebService/src/main/java/com/java110/web/components/fee/ListArrearsComponent.java

@@ -0,0 +1,36 @@
+package com.java110.web.components.fee;
+
+import com.java110.core.context.IPageData;
+import com.java110.web.smo.IFeeServiceSMO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+/**
+ * @ClassName ListArrearsComponent
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/6/18 19:11
+ * @Version 1.0
+ * add by wuxw 2019/6/18
+ **/
+
+@Component("listArrears")
+public class ListArrearsComponent {
+
+    @Autowired
+    private IFeeServiceSMO feeServiceSMOImpl;
+
+    public ResponseEntity<String> list(IPageData pd) {
+        return feeServiceSMOImpl.listArrearsFee(pd);
+    }
+
+
+    public IFeeServiceSMO getFeeServiceSMOImpl() {
+        return feeServiceSMOImpl;
+    }
+
+    public void setFeeServiceSMOImpl(IFeeServiceSMO feeServiceSMOImpl) {
+        this.feeServiceSMOImpl = feeServiceSMOImpl;
+    }
+}

+ 6 - 0
WebService/src/main/java/com/java110/web/smo/IFeeServiceSMO.java

@@ -73,6 +73,12 @@ public interface IFeeServiceSMO {
      */
     ResponseEntity<String> saveOrUpdateParkingSpaceFeeConfig(IPageData pd);
 
+    /**
+     * 查询费用信息
+     * @param pd 页面数据封装
+     * @return 费用信息
+     */
+    ResponseEntity<String> listArrearsFee(IPageData pd);
 
 
 }

+ 38 - 0
WebService/src/main/java/com/java110/web/smo/impl/FeeServiceSMOImpl.java

@@ -319,6 +319,34 @@ public class FeeServiceSMOImpl extends BaseComponentSMO implements IFeeServiceSM
         return responseEntity;
     }
 
+    @Override
+    public ResponseEntity<String> listArrearsFee(IPageData pd) {
+        validateListFee(pd);
+
+        //校验员工是否有权限操作
+        //super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_PARKING_SPACE_CONFIG_FEE);
+
+        JSONObject paramIn = JSONObject.parseObject(pd.getReqData());
+        String communityId = paramIn.getString("communityId");
+        ResponseEntity responseEntity = super.getStoreInfo(pd, restTemplate);
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+        Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeId", "根据用户ID查询商户ID失败,未包含storeId节点");
+        Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeTypeCd", "根据用户ID查询商户类型失败,未包含storeTypeCd节点");
+
+        String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId");
+        String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd");
+        //数据校验是否 商户是否入驻该小区
+        super.checkStoreEnterCommunity(pd, storeId, storeTypeCd, communityId, restTemplate);
+
+        responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(),
+                ServiceConstant.SERVICE_API_URL + "/api/fee.queryArrearsFee",
+                HttpMethod.POST);
+
+        return responseEntity;
+    }
+
 
     private void validateLoadFee(IPageData pd) {
         Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "请求报文中未包含communityId节点");
@@ -342,6 +370,16 @@ public class FeeServiceSMOImpl extends BaseComponentSMO implements IFeeServiceSM
     }
 
 
+    private void validateListFee(IPageData pd){
+        Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "请求报文中未包含communityId节点");
+        Assert.jsonObjectHaveKey(pd.getReqData(), "feeTypeCd", "请求报文中未包含feeTypeCd节点");
+
+        JSONObject paramIn = JSONObject.parseObject(pd.getReqData());
+        Assert.hasLength(paramIn.getString("communityId"), "小区ID不能为空");
+        Assert.hasLength(paramIn.getString("feeTypeCd"), "停车位feeTypeCd不能为空");
+    }
+
+
     /**
      * 校验缴费参数
      *

+ 12 - 26
WebService/src/main/resources/components/index-arrears/indexArrears.html

@@ -5,25 +5,13 @@
             <div class="ibox-title">
                 <h5>欠费信息</h5>
                 <div class="ibox-tools">
+                    <div data-toggle="buttons" class="btn-group btn-group-toggle">
+                        <label class="btn btn-sm btn-white active"> <input type="radio" v-on:click="_switchFeeType(888800010001)" name="options"> 物业费 </label>
+                        <label class="btn btn-sm btn-white "> <input type="radio" v-on:click="_switchFeeType(888800010006)" name="options"> 停车费 </label>
+                    </div>
                 </div>
             </div>
             <div class="ibox-content">
-                <div class="row">
-                    <div class="col-sm-9 m-b-xs">
-                        <div data-toggle="buttons" class="btn-group btn-group-toggle">
-                            <label class="btn btn-sm btn-white active"> <input type="radio" id="option1" name="options"> 物业费 </label>
-                            <label class="btn btn-sm btn-white "> <input type="radio" id="option2" name="options"> 停车费 </label>
-                        </div>
-                    </div>
-                    <div class="col-sm-3">
-                        <div class="input-group mb-3">
-                            <input type="text" class="form-control form-control-sm" placeholder="请输入业主名称">
-                            <div class="input-group-append">
-                                <button class="btn btn-sm btn-primary" type="button">查询</button>
-                            </div>
-                        </div>
-                    </div>
-                </div>
                 <div class="table-responsive">
                     <table class="table table-striped">
                         <thead>
@@ -33,20 +21,18 @@
                             <th>联系电话 </th>
                             <th>房屋编号 </th>
                             <th>费用开始时间 </th>
-                            <th>到期时间 </th>
+                            <th>费用到期时间 </th>
                         </tr>
                         </thead>
                         <tbody>
-                        <tr>
-                            <td>Project <small>This is example of project</small></td>
-                            <td>Patrick Smith</td>
-                            <td>0800 051213</td>
-                            <td>Inceptos Hymenaeos Ltd</td>
-                            <td><span class="pie">0.52/1.561</span></td>
-                            <td>20%</td>
+                        <tr v-for="arr in arrears">
+                            <td>{{arr.feeId}}</td>
+                            <td>{{arr.ownerName}}</td>
+                            <td>{{arr.tel}}</td>
+                            <td>{{arr.num}}</td>
+                            <td>{{arr.startTime}}</td>
+                            <td>{{arr.endTime}}</td>
                         </tr>
-
-
                         </tbody>
                     </table>
                     <!-- 分页 -->

+ 14 - 9
WebService/src/main/resources/components/index-arrears/indexArrears.js

@@ -5,40 +5,41 @@
         data:{
             indexArrearsInfo:{
                 arrears:[],
+                feeTypeCd:'888800010001',
                 total:0,
                 records:1
             }
         },
         _initMethod:function(){
-            //vc.component._listOwnerData(DEFAULT_PAGE,DEFAULT_ROWS);
+            vc.component._listArrearsData();
         },
         _initEvent:function(){
 
         },
         methods:{
-            _listOwnerData:function(_page,_row){
+            _listArrearsData:function(_page,_row){
                 var param = {
                     params:{
                         page:_page,
                         row:_row,
                         communityId:vc.getCurrentCommunity().communityId,
-                        ownerTypeCd:'1001'
+                        feeTypeCd:vc.indexArrearsInfo.feeTypeCd
                     }
                 }
 
                //发送get请求
-               vc.http.get('listOwner',
+               vc.http.get('listArrears',
                             'list',
                              param,
                              function(json,res){
-                                var listOwnerData =JSON.parse(json);
+                                var listArrearsData =JSON.parse(json);
 
-                                vc.component.listOwnerInfo.total = listOwnerData.total;
-                                vc.component.listOwnerInfo.records = listOwnerData.records;
-                                vc.component.listOwnerInfo.owners = listOwnerData.owners;
+                                vc.component.indexArrearsInfo.total = listArrearsData.total;
+                                vc.component.indexArrearsInfo.records = listArrearsData.records;
+                                vc.component.indexArrearsInfo.arrears = listArrearsData.arrears;
 
                                 vc.emit('pagination','init',{
-                                    total:vc.component.listOwnerInfo.records,
+                                    total:vc.component.indexArrearsInfo.records,
                                     currentPage:_page
                                 });
                              },function(errInfo,error){
@@ -46,6 +47,10 @@
                              }
                            );
 
+            },
+            _switchFeeType:function(_feeTypeCd){
+                vc.component.indexArrearsInfo.feeTypeCd = _feeTypeCd;
+                vc.component._listArrearsData();
             }
         }
     })

+ 20 - 0
java110-bean/src/main/java/com/java110/dto/FeeDto.java

@@ -22,6 +22,9 @@ private String communityId;
 private String feeId;
 private String userId;
 private String payerObjId;
+private String[] feeTypeCds;
+
+private Date arrearsEndTime;
 
 
     private Date createTime;
@@ -105,4 +108,21 @@ public void setPayerObjId(String payerObjId) {
     public void setEndTime(Date endTime) {
         this.endTime = endTime;
     }
+
+
+    public Date getArrearsEndTime() {
+        return arrearsEndTime;
+    }
+
+    public void setArrearsEndTime(Date arrearsEndTime) {
+        this.arrearsEndTime = arrearsEndTime;
+    }
+
+    public String[] getFeeTypeCds() {
+        return feeTypeCds;
+    }
+
+    public void setFeeTypeCds(String[] feeTypeCds) {
+        this.feeTypeCds = feeTypeCds;
+    }
 }

+ 19 - 0
java110-bean/src/main/java/com/java110/dto/OwnerDto.java

@@ -17,6 +17,7 @@ public class OwnerDto extends PageDto implements Serializable {
     private String communityId;
 
     private String roomId;
+    private String[] roomIds;
     private String sex;
     private String name;
     private String link;
@@ -26,6 +27,7 @@ public class OwnerDto extends PageDto implements Serializable {
     private String age;
     private String memberId;
     private String ownerTypeCd;
+    private String roomNum;
 
     private String userName;
 
@@ -132,4 +134,21 @@ public void setMemberId(String memberId) {
     public void setOwnerTypeCd(String ownerTypeCd) {
         this.ownerTypeCd = ownerTypeCd;
     }
+
+
+    public String[] getRoomIds() {
+        return roomIds;
+    }
+
+    public void setRoomIds(String[] roomIds) {
+        this.roomIds = roomIds;
+    }
+
+    public String getRoomNum() {
+        return roomNum;
+    }
+
+    public void setRoomNum(String roomNum) {
+        this.roomNum = roomNum;
+    }
 }

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/RoomDto.java

@@ -19,6 +19,7 @@ public class RoomDto extends PageDto implements Serializable {
     private String remark;
     private String userId;
     private String roomId;
+    private String[] roomIds;
     private String layer;
     private String builtUpArea;
     private String roomNum;
@@ -203,4 +204,13 @@ public class RoomDto extends PageDto implements Serializable {
     public void setFloorNum(String floorNum) {
         this.floorNum = floorNum;
     }
+
+
+    public String[] getRoomIds() {
+        return roomIds;
+    }
+
+    public void setRoomIds(String[] roomIds) {
+        this.roomIds = roomIds;
+    }
 }

+ 80 - 0
java110-bean/src/main/java/com/java110/vo/api/ApiArrearsFeeDataVo.java

@@ -0,0 +1,80 @@
+package com.java110.vo.api;
+
+import com.java110.vo.Vo;
+
+/**
+ * @ClassName ApiArrearsFeeVo
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/6/18 19:36
+ * @Version 1.0
+ * add by wuxw 2019/6/18
+ **/
+public class ApiArrearsFeeDataVo extends Vo {
+
+    private String feeId;
+    private String payerObjId;
+    private String ownerName;
+    private String tel;
+    private String num;
+    private String startTime;
+    private String endTime;
+
+
+    public String getFeeId() {
+        return feeId;
+    }
+
+    public void setFeeId(String feeId) {
+        this.feeId = feeId;
+    }
+
+    public String getOwnerName() {
+        return ownerName;
+    }
+
+    public void setOwnerName(String ownerName) {
+        this.ownerName = ownerName;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getNum() {
+        return num;
+    }
+
+    public void setNum(String num) {
+        this.num = num;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+
+    public String getPayerObjId() {
+        return payerObjId;
+    }
+
+    public void setPayerObjId(String payerObjId) {
+        this.payerObjId = payerObjId;
+    }
+}

+ 28 - 0
java110-bean/src/main/java/com/java110/vo/api/ApiArrearsFeeVo.java

@@ -0,0 +1,28 @@
+package com.java110.vo.api;
+
+import com.java110.vo.MorePageVo;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @ClassName ApiArrearsFeeVo
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2019/6/18 19:36
+ * @Version 1.0
+ * add by wuxw 2019/6/18
+ **/
+public class ApiArrearsFeeVo extends MorePageVo implements Serializable {
+
+    List<ApiArrearsFeeDataVo> arrears;
+
+
+    public List<ApiArrearsFeeDataVo> getArrears() {
+        return arrears;
+    }
+
+    public void setArrears(List<ApiArrearsFeeDataVo> arrears) {
+        this.arrears = arrears;
+    }
+}

+ 6 - 0
java110-common/src/main/java/com/java110/common/constant/FeeTypeConstant.java

@@ -45,6 +45,12 @@ public class FeeTypeConstant {
     public static final String FEE_TYPE_HIRE_DOWN_PARKING_SPACE = "888800010005";
 
 
+    /**
+     * 停车费 出租费用类型
+     */
+    public static final String FEE_TYPE_HIRE_PARKING_SPACE = "888800010006";
+
+
 
 
 

+ 3 - 0
java110-common/src/main/java/com/java110/common/constant/ServiceCodeConstant.java

@@ -430,6 +430,9 @@ public class ServiceCodeConstant {
     public static final String SERVICE_CODE_QUERY_FEE_DETAIL = "fee.queryFeeDetail";
     public static final String SERVICE_CODE_QUERY_FEE = "fee.queryFee";
 
+    //查询欠费数据
+    public static final String SERVICE_CODE_QUERY_ARREARS_FEE = "fee.queryArrearsFee";
+
     //查询首页统计信息
     public static final String SERVICE_CODE_QUERY_INDEX_STATISTIC = "index.queryIndexStatistic";
 

+ 9 - 0
java110-core/src/main/java/com/java110/core/smo/owner/IOwnerInnerServiceSMO.java

@@ -79,4 +79,13 @@ public interface IOwnerInnerServiceSMO {
     @RequestMapping(value = "/queryNoEnterRoomOwnerCount", method = RequestMethod.POST)
     int queryNoEnterRoomOwnerCount(@RequestBody OwnerDto ownerDto);
 
+    /**
+     * 根据房屋查询业主信息
+     *
+     * @param ownerDto 数据对象分享
+     * @return 小区下的小区楼记录数
+     */
+    @RequestMapping(value = "/queryOwnersByRoom", method = RequestMethod.POST)
+    List<OwnerDto> queryOwnersByRoom(@RequestBody OwnerDto ownerDto);
+
 }

+ 22 - 4
java110-db/src/main/resources/mapper/fee/FeeServiceDaoImplMapper.xml

@@ -113,7 +113,13 @@ where 1 =1
 </if> 
 <if test="feeTypeCd !=null and feeTypeCd != ''">
    and t.fee_type_cd= #{feeTypeCd}
-</if> 
+</if>
+<if test="feeTypeCds != null ">
+    and t.fee_type_cd in
+    <foreach collection="feeTypeCds" item="item" open="(" close=")" separator=",">
+        #{item}
+    </foreach>
+</if>
 <if test="startTime !=null ">
    and t.start_time= #{startTime}
 </if> 
@@ -122,7 +128,10 @@ where 1 =1
 </if> 
 <if test="endTime !=null ">
    and t.end_time= #{endTime}
-</if> 
+</if>
+<if test="arrearsEndTime != null">
+    and t.end_time &lt; #{arrearsEndTime}
+</if>
 <if test="communityId !=null and communityId != ''">
    and t.community_id= #{communityId}
 </if> 
@@ -199,7 +208,13 @@ where 1 =1
 </if> 
 <if test="feeTypeCd !=null and feeTypeCd != ''">
    and t.fee_type_cd= #{feeTypeCd}
-</if> 
+</if>
+ <if test="feeTypeCds != null ">
+     and t.fee_type_cd in
+     <foreach collection="feeTypeCds" item="item" open="(" close=")" separator=",">
+         #{item}
+     </foreach>
+ </if>
 <if test="startTime !=null">
    and t.start_time= #{startTime}
 </if> 
@@ -208,7 +223,10 @@ where 1 =1
 </if> 
 <if test="endTime !=null ">
    and t.end_time= #{endTime}
-</if> 
+</if>
+ <if test="arrearsEndTime != null">
+     and t.end_time &lt; #{arrearsEndTime}
+ </if>
 <if test="communityId !=null and communityId != ''">
    and t.community_id= #{communityId}
 </if> 

+ 24 - 0
java110-db/src/main/resources/mapper/owner/OwnerServiceDaoImplMapper.xml

@@ -351,4 +351,28 @@ and t.member_id= #{memberId}
             AND m.`status_cd` = '0'
     </select>
 
+    <!-- queryOwnersByRoom -->
+    <!-- 根据房屋查询业主信息 -->
+    <select id="queryNoEnterRoomOwnerCount" parameterType="Map" resultType="Map">
+        SELECT t.sex,t.name,t.link,t.status_cd,t.status_cd statusCd,t.remark,t.owner_id,t.owner_id ownerId,t.b_id,t.b_id bId,
+        t.user_id,t.user_id userId,t.age,t.member_id,t.member_id memberId,t.owner_type_cd,t.owner_type_cd ownerTypeCd,
+        r.`room_id` roomId,r.`room_num` roomNum
+        FROM building_room r,building_owner_room_rel orr,building_owner t
+        WHERE r.`room_id` = orr.`room_id`
+        AND orr.`owner_id` = t.`owner_id`
+        <if test="roomId !=null and roomId != ''">
+            AND r.`room_id` = #{roomId}
+        </if>
+        <if test="roomIds != null ">
+            and t.room_id in
+            <foreach collection="roomIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        AND r.`status_cd` = '0'
+        AND orr.`status_cd` = '0'
+        AND t.`status_cd` = '0'
+    </select>
+
+
 </mapper>

+ 8 - 1
java110-db/src/main/resources/mapper/room/RoomServiceDaoImplMapper.xml

@@ -134,7 +134,14 @@ where 1 =1
 </if> 
 <if test="roomId !=null and roomId != ''">
    and t.room_id= #{roomId}
-</if> 
+</if>
+
+<if test="roomIds != null">
+    and t.room_id in
+    <foreach collection="roomIds" item="item" open="(" close=")" separator=",">
+        #{item}
+    </foreach>
+</if>
 <if test="layer !=null and layer != ''">
    and t.layer= #{layer}
 </if>