Explorar o código

优化处理费用

java110 %!s(int64=5) %!d(string=hai) anos
pai
achega
89ee026abd

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

@@ -20,6 +20,7 @@ public class FeeDto extends PageDto implements Serializable {
 
     public static final String PAYER_OBJ_TYPE_ROOM = "3333"; //房屋 6666 是车位
     public static final String PAYER_OBJ_TYPE_PARKING_SPACE = "6666";//是车位
+    public static final String PAYER_OBJ_TYPE_CAR = "6666";//是车位
 
     public static final String FEE_FLAG_ONCE = "2006012";
 

+ 57 - 0
java110-bean/src/main/java/com/java110/dto/owner/OwnerCarDto.java

@@ -33,6 +33,15 @@ public class OwnerCarDto extends PageDto implements Serializable {
     private String idCard;
     private String link;
 
+    private Date startTime;
+    private Date endTime;
+    private String state;
+    private String stateName;
+
+    private String areaNum;
+
+    private String num;
+
 
     private Date createTime;
 
@@ -191,4 +200,52 @@ public class OwnerCarDto extends PageDto implements Serializable {
     public void setLink(String link) {
         this.link = link;
     }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public String getAreaNum() {
+        return areaNum;
+    }
+
+    public void setAreaNum(String areaNum) {
+        this.areaNum = areaNum;
+    }
+
+    public String getNum() {
+        return num;
+    }
+
+    public void setNum(String num) {
+        this.num = num;
+    }
+
+    public String getStateName() {
+        return stateName;
+    }
+
+    public void setStateName(String stateName) {
+        this.stateName = stateName;
+    }
 }

+ 30 - 0
java110-bean/src/main/java/com/java110/po/car/OwnerCarPo.java

@@ -22,6 +22,12 @@ public class OwnerCarPo implements Serializable {
     private String userId;
     private String remark;
 
+    private String startTime;
+
+    private String endTime;
+
+    private String state;
+
     private String communityId;
 
     public String getCarId() {
@@ -103,4 +109,28 @@ public class OwnerCarPo implements Serializable {
     public void setCommunityId(String communityId) {
         this.communityId = communityId;
     }
+
+    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 getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
 }

+ 6 - 15
java110-db/src/main/resources/mapper/user/OwnerCarServiceDaoImplMapper.xml

@@ -112,22 +112,13 @@
         select t.car_color,t.car_color carColor,t.car_brand,t.car_brand carBrand,t1.name car_type,t1.name carType,
         t.car_num,t.car_num carNum,t.ps_id,t.ps_id psId,t.remark,t.status_cd,t.status_cd statusCd,t.owner_id,
         t.owner_id ownerId,t.b_id,t.b_id bId,t.user_id,t.user_id userId,t.car_id,t.car_id carId ,t.create_time
-        createTime,t.community_id communityId
-        <if test="withOwner == true">
-            ,bow.name ownerName,bow.id_card idCard,bow.link
-        </if>
-        from owner_car t,t_dict t1
-        <if test="withOwner == true">
-            ,building_owner bow
-        </if>
+        createTime,t.community_id communityId,bow.name ownerName,bow.id_card idCard,bow.link,t2.name stateName
+        from owner_car t
+        left join  t_dict t1  on t.car_type=t1.status_cd and t1.table_name='owner_car' and t1.table_columns = 'car_type'
+        left join  t_dict t2  on t.state=t2.status_cd and t2.table_name='owner_car' and t2.table_columns = 'state'
+        left join building_owner bow on t.owner_id = bow.owner_id and bow.status_cd = '0' and bow.community_id = t.community_id
         where
-        t.car_type=t1.status_cd
-        and t1.table_name='owner_car'
-        <if test="withOwner == true">
-            and t.owner_id = bow.owner_id
-            and bow.status_cd = '0'
-        </if>
-
+        t.status_cd = '0'
         <if test="carColor !=null and carColor != ''">
             and t.car_color= #{carColor}
         </if>

+ 6 - 0
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeConstant.java

@@ -462,6 +462,12 @@ public class ServiceCodeConstant {
     //查询业主
     public static final String SERVICE_CODE_QUERY_OWNER = "owner.queryOwners";
 
+    //查询业主车辆
+    public static final String SERVICE_CODE_QUERY_OWNER_CAR = "owner.queryOwnerCars";
+
+    //删除业主车辆
+    public static final String SERVICE_CODE_DELETE_OWNER_CAR = "owner.deleteOwnerCars";
+
     //查询业主成员
     public static final String SERVICE_CODE_QUERY_OWNER_MEMBER = "owner.queryOwnerMembers";
 

+ 6 - 3
service-api/src/main/java/com/java110/api/listener/fee/ListFeeListener.java

@@ -278,18 +278,21 @@ public class ListFeeListener extends AbstractServiceApiListener {
         from.setTime(fromDate);
         Calendar to = Calendar.getInstance();
         to.setTime(toDate);
+        int result = to.get(Calendar.MONTH) - from.get(Calendar.MONTH);
+        Calendar newFrom = Calendar.getInstance();
+        newFrom.setTime(fromDate);
+        newFrom.add(Calendar.MONTH, result);
 
-        long t1 = from.getTimeInMillis();
+        long t1 = newFrom.getTimeInMillis();
         long t2 = to.getTimeInMillis();
         long days = (t2 - t1) / (24 * 60 * 60 * 1000);
 
         BigDecimal tmpDays = new BigDecimal(days);
         BigDecimal monthDay = new BigDecimal(30);
 
-        return tmpDays.divide(monthDay, 2, RoundingMode.HALF_UP).doubleValue();
+        return tmpDays.divide(monthDay, 2, RoundingMode.HALF_UP).doubleValue() + result;
     }
 
-
     private Date getTargetEndTime(double v, Date startDate) {
         Calendar endDate = Calendar.getInstance();
         endDate.setTime(startDate);

+ 70 - 0
service-api/src/main/java/com/java110/api/listener/owner/DeleteOwnerCarListener.java

@@ -0,0 +1,70 @@
+package com.java110.api.listener.owner;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiPlusListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.dto.fee.FeeDto;
+import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.po.car.OwnerCarPo;
+import com.java110.utils.constant.BusinessTypeConstant;
+import com.java110.utils.constant.ServiceCodeConstant;
+import com.java110.utils.util.Assert;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+
+import java.util.List;
+
+
+/**
+ * 保存小区侦听
+ * add by wuxw 2019-06-30
+ */
+@Java110Listener("deleteOwnerCarListener")
+public class DeleteOwnerCarListener extends AbstractServiceApiPlusListener {
+
+
+    @Autowired
+    private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
+
+        Assert.hasKeyAndValue(reqJson, "carId", "carId不能为空");
+        Assert.hasKeyAndValue(reqJson, "communityId", "小区ID不能为空");
+
+        FeeDto feeDto = new FeeDto();
+        feeDto.setPayerObjId(reqJson.getString("carId"));
+        feeDto.setCommunityId(reqJson.getString("communityId"));
+        feeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
+        List<FeeDto> feeDtoList = feeInnerServiceSMOImpl.queryFees(feeDto);
+
+        for (FeeDto tmpFeeDto : feeDtoList) {
+            if (!FeeDto.STATE_FINISH.equals(tmpFeeDto.getState())) {
+                throw new IllegalArgumentException("存在 未结束费用 不能删除");
+            }
+        }
+
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+        OwnerCarPo ownerCarPo = new OwnerCarPo();
+        ownerCarPo.setCommunityId(reqJson.getString("communityId"));
+        ownerCarPo.setCarId(reqJson.getString("carId"));
+        super.delete(context, ownerCarPo, BusinessTypeConstant.BUSINESS_TYPE_DELETE_OWNER_CAR);
+    }
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_DELETE_OWNER_CAR;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.POST;
+    }
+
+}

+ 131 - 0
service-api/src/main/java/com/java110/api/listener/owner/QueryOwnerCarsListener.java

@@ -0,0 +1,131 @@
+package com.java110.api.listener.owner;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiDataFlowListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.dto.owner.OwnerCarDto;
+import com.java110.dto.parking.ParkingSpaceDto;
+import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.utils.constant.ServiceCodeConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @ClassName OwnerDto
+ * @Description 查询业主车辆
+ * @Author wuxw
+ * @Date 2019/4/24 8:52
+ * @Version 1.0
+ * add by wuxw 2019/4/24
+ **/
+@Java110Listener("queryOwnerCarsListener")
+public class QueryOwnerCarsListener extends AbstractServiceApiDataFlowListener {
+
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
+
+    @Autowired
+    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_QUERY_OWNER_CAR;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.GET;
+    }
+
+    /**
+     * 业务层数据处理
+     *
+     * @param event 时间对象
+     */
+    @Override
+    public void soService(ServiceDataFlowEvent event) {
+        DataFlowContext dataFlowContext = event.getDataFlowContext();
+        //获取请求数据
+        JSONObject reqJson = dataFlowContext.getReqJson();
+        validateOwnerCarData(reqJson);
+
+        int row = reqJson.getInteger("row");
+
+        //查询总记录数
+        int total = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(BeanConvertUtil.covertBean(reqJson, OwnerCarDto.class));
+        List<OwnerCarDto> ownerCarDtoList = null;
+
+        if (total > 0) {
+            ownerCarDtoList = ownerCarInnerServiceSMOImpl.queryOwnerCars(BeanConvertUtil.covertBean(reqJson, OwnerCarDto.class));
+
+            freshPs(ownerCarDtoList);
+        } else {
+            ownerCarDtoList = new ArrayList<>();
+        }
+
+        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity((int) Math.ceil((double) total / (double) row), total, ownerCarDtoList);
+        dataFlowContext.setResponseEntity(responseEntity);
+    }
+
+    private void freshPs(List<OwnerCarDto> ownerCarDtoList) {
+
+        if (ownerCarDtoList == null || ownerCarDtoList.size() < 1) {
+            return;
+        }
+
+        List<String> psIds = new ArrayList<>();
+        for (OwnerCarDto ownerCarDto : ownerCarDtoList) {
+            if(StringUtil.isEmpty(ownerCarDto.getPsId())){
+                continue;
+            }
+            psIds.add(ownerCarDto.getPsId());
+        }
+
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setCommunityId(ownerCarDtoList.get(0).getCommunityId());
+        parkingSpaceDto.setPsIds(psIds.toArray(new String[psIds.size()]));
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+
+        for(ParkingSpaceDto tmpParkingSpaceDto : parkingSpaceDtos){
+            for (OwnerCarDto ownerCarDto : ownerCarDtoList){
+                if(tmpParkingSpaceDto.getPsId().equals(ownerCarDto.getPsId())){
+                    ownerCarDto.setAreaNum(tmpParkingSpaceDto.getAreaNum());
+                    ownerCarDto.setNum(tmpParkingSpaceDto.getNum());
+                }
+            }
+        }
+    }
+
+
+    /**
+     * 校验查询条件是否满足条件
+     *
+     * @param reqJson 包含查询条件
+     */
+    private void validateOwnerCarData(JSONObject reqJson) {
+        Assert.jsonObjectHaveKey(reqJson, "page", "请求中未包含page信息");
+        Assert.jsonObjectHaveKey(reqJson, "row", "请求中未包含row信息");
+        Assert.jsonObjectHaveKey(reqJson, "communityId", "请求中未包含communityId信息");
+        Assert.isInteger(reqJson.getString("page"), "不是有效数字");
+        Assert.isInteger(reqJson.getString("row"), "不是有效数字");
+
+    }
+
+    @Override
+    public int getOrder() {
+        return super.DEFAULT_ORDER;
+    }
+}

+ 0 - 11
service-user/src/main/java/com/java110/user/smo/impl/OwnerCarInnerServiceSMOImpl.java

@@ -46,17 +46,6 @@ public class OwnerCarInnerServiceSMOImpl extends BaseServiceSMO implements IOwne
 
         List<OwnerCarDto> ownerCars = BeanConvertUtil.covertBeanList(ownerCarServiceDaoImpl.getOwnerCarInfo(BeanConvertUtil.beanCovertMap(ownerCarDto)), OwnerCarDto.class);
 
-        if (ownerCars == null || ownerCars.size() == 0) {
-            return ownerCars;
-        }
-
-        String[] userIds = getUserIds(ownerCars);
-        //根据 userId 查询用户信息
-        List<UserDto> users = userInnerServiceSMOImpl.getUserInfo(userIds);
-
-        for (OwnerCarDto ownerCar : ownerCars) {
-            refreshOwnerCar(ownerCar, users);
-        }
         return ownerCars;
     }