| | |
| | | package com.java110.fee.bmo.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.java110.dto.RoomDto; |
| | | import com.java110.dto.fee.BillDto; |
| | | import com.java110.dto.fee.BillOweFeeDto; |
| | |
| | | import com.java110.intf.fee.IFeeInnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerInnerServiceSMO; |
| | | import com.java110.utils.util.DateUtil; |
| | | import com.java110.utils.util.StringUtil; |
| | | import com.java110.vo.ResultVo; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.ResponseEntity; |
| | |
| | | @Override |
| | | public ResponseEntity<String> queryAllOwneFee(FeeDto feeDto) { |
| | | ResponseEntity<String> responseEntity = null; |
| | | |
| | | if (!freshFeeDtoParam(feeDto)) { |
| | | return ResultVo.createResponseEntity(1, 0, new JSONArray()); |
| | | } |
| | | |
| | | if (FeeConfigDto.BILL_TYPE_EVERY.equals(feeDto.getBillType())) { |
| | | responseEntity = computeEveryOweFee(feeDto); |
| | | } else { |
| | | responseEntity = computeBillOweFee(feeDto); |
| | | } |
| | | return responseEntity; |
| | | } |
| | | |
| | | private boolean freshFeeDtoParam(FeeDto feeDto) { |
| | | |
| | | if (StringUtil.isEmpty(feeDto.getPayerObjId())) { |
| | | return true; |
| | | } |
| | | |
| | | if (!feeDto.getPayerObjId().contains("#")) { |
| | | return false; |
| | | } |
| | | if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDto.getPayerObjType())) { |
| | | String[] nums = feeDto.getPayerObjId().split("#"); |
| | | if (nums.length != 3) { |
| | | return false; |
| | | } |
| | | RoomDto roomDto = new RoomDto(); |
| | | roomDto.setFloorId(nums[0]); |
| | | roomDto.setUnitNum(nums[1]); |
| | | roomDto.setRoomNum(nums[2]); |
| | | roomDto.setCommunityId(feeDto.getCommunityId()); |
| | | List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto); |
| | | |
| | | if (roomDtos == null || roomDtos.size() < 1) { |
| | | return false; |
| | | } |
| | | feeDto.setPayerObjId(roomDtos.get(0).getRoomId()); |
| | | |
| | | } else { |
| | | String[] nums = feeDto.getPayerObjId().split("#"); |
| | | if (nums.length != 2) { |
| | | return false; |
| | | } |
| | | ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto(); |
| | | parkingSpaceDto.setAreaNum(nums[0]); |
| | | parkingSpaceDto.setNum(nums[1]); |
| | | parkingSpaceDto.setCommunityId(feeDto.getCommunityId()); |
| | | List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto); |
| | | |
| | | if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) { |
| | | return false; |
| | | } |
| | | feeDto.setPayerObjId(parkingSpaceDtos.get(0).getPsId()); |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | |
| | | computeRoomFee(roomFees, roomIds); |
| | | } |
| | | |
| | | if (roomFees.size() > 0) { |
| | | if (psFees.size() > 0) { |
| | | computePsFee(psFees, psIds); |
| | | } |
| | | } |
| | |
| | | if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) { //数据有问题 |
| | | return; |
| | | } |
| | | List<String> ownerIds = new ArrayList<>(); |
| | | for (ParkingSpaceDto tmpParkingSpaceDto : parkingSpaceDtos) { |
| | | for (FeeDto feeDto : psFees) { |
| | | dealFeePs(tmpParkingSpaceDto, feeDto); |
| | | } |
| | | ownerIds.add(tmpParkingSpaceDto.getOwnerId()); |
| | | } |
| | | |
| | | if (ownerIds.size() < 1) { |
| | | return; |
| | | } |
| | | |
| | | OwnerDto ownerDto = new OwnerDto(); |
| | | ownerDto.setOwnerIds(ownerIds.toArray(new String[ownerIds.size()])); |
| | | ownerDto.setOwnerIds(psIds.toArray(new String[psIds.size()])); |
| | | ownerDto.setCommunityId(psFees.get(0).getCommunityId()); |
| | | List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto); |
| | | List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByParkingSpace(ownerDto); |
| | | |
| | | for (OwnerDto tmpOwnerDto : ownerDtos) { |
| | | for (FeeDto feeDto : psFees) { |
| | |
| | | double month = dayCompare(feeDto.getEndTime(), DateUtil.getCurrentDate()); |
| | | BigDecimal price = new BigDecimal(feeDto.getFeePrice()); |
| | | price = price.multiply(new BigDecimal(month)); |
| | | feeDto.setAmountOwed(price.doubleValue()); |
| | | feeDto.setAmountOwed(price.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue() + ""); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | feeDto.setOwnerName(tmpOwnerDto.getName()); |
| | | feeDto.setOwnerTel(feeDto.getOwnerTel()); |
| | | feeDto.setOwnerTel(tmpOwnerDto.getLink()); |
| | | } |
| | | |
| | | private void dealFeeRoom(RoomDto tmpRoomDto, FeeDto feeDto) { |
| | |
| | | double month = dayCompare(feeDto.getEndTime(), DateUtil.getCurrentDate()); |
| | | BigDecimal price = new BigDecimal(feeDto.getFeePrice()); |
| | | price = price.multiply(new BigDecimal(month)); |
| | | feeDto.setAmountOwed(price.doubleValue()); |
| | | feeDto.setAmountOwed(price.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue() + ""); |
| | | |
| | | } |
| | | |
| | |
| | | } else { |
| | | feePrice = 0.00; |
| | | } |
| | | |
| | | feeDto.setFeePrice(feePrice); |
| | | double month = dayCompare(feeDto.getEndTime(), DateUtil.getCurrentDate()); |
| | | BigDecimal price = new BigDecimal(feeDto.getFeePrice()); |
| | | price = price.multiply(new BigDecimal(month)); |
| | | feeDto.setFeePrice(price.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | |
| | | |
| | | } |
| | |
| | | feePrice = 0.00; |
| | | } |
| | | |
| | | |
| | | feeDto.setFeePrice(feePrice); |
| | | double month = dayCompare(feeDto.getEndTime(), DateUtil.getCurrentDate()); |
| | | BigDecimal price = new BigDecimal(feeDto.getFeePrice()); |
| | | price = price.multiply(new BigDecimal(month)); |
| | | feeDto.setFeePrice(price.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | } |
| | | |
| | | |