|
|
@@ -4,13 +4,17 @@ 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.RoomDto;
|
|
|
import com.java110.dto.fee.FeeAttrDto;
|
|
|
import com.java110.dto.fee.FeeConfigDto;
|
|
|
import com.java110.dto.fee.FeeDto;
|
|
|
+import com.java110.dto.parking.ParkingSpaceDto;
|
|
|
import com.java110.dto.repair.RepairDto;
|
|
|
import com.java110.fee.bmo.IPayOweFee;
|
|
|
import com.java110.fee.listener.fee.UpdateFeeInfoListener;
|
|
|
+import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
|
|
|
import com.java110.intf.community.IRepairInnerServiceSMO;
|
|
|
+import com.java110.intf.community.IRoomInnerServiceSMO;
|
|
|
import com.java110.intf.fee.IFeeAttrInnerServiceSMO;
|
|
|
import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
|
|
|
import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
|
|
|
@@ -62,6 +66,12 @@ public class PayOweFeeImpl implements IPayOweFee {
|
|
|
@Autowired
|
|
|
private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
|
|
|
+
|
|
|
/**
|
|
|
* 欠费缴费
|
|
|
*
|
|
|
@@ -192,6 +202,57 @@ public class PayOweFeeImpl implements IPayOweFee {
|
|
|
|
|
|
BigDecimal feePrice = new BigDecimal("0.00");
|
|
|
|
|
|
+ if ("3333".equals(feeDto.getPayerObjType())) { //房屋相关
|
|
|
+ String computingFormula = feeDto.getComputingFormula();
|
|
|
+ if ("1001".equals(computingFormula)) { //面积*单价+附加费
|
|
|
+ RoomDto roomDto = new RoomDto();
|
|
|
+ roomDto.setRoomId(feeDto.getPayerObjId());
|
|
|
+ roomDto.setCommunityId(feeDto.getCommunityId());
|
|
|
+ List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
|
|
|
+ if (roomDtos == null || roomDtos.size() != 1) {
|
|
|
+ throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "未查到房屋信息,查询多条数据");
|
|
|
+ }
|
|
|
+ //feePrice = Double.parseDouble(feeDto.getSquarePrice()) * Double.parseDouble(roomDtos.get(0).getBuiltUpArea()) + Double.parseDouble(feeDto.getAdditionalAmount());
|
|
|
+ BigDecimal squarePrice = new BigDecimal(Double.parseDouble(feeDto.getSquarePrice()));
|
|
|
+ BigDecimal builtUpArea = new BigDecimal(Double.parseDouble(roomDtos.get(0).getBuiltUpArea()));
|
|
|
+ BigDecimal additionalAmount = new BigDecimal(Double.parseDouble(feeDto.getAdditionalAmount()));
|
|
|
+ feePrice = squarePrice.multiply(builtUpArea).add(additionalAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN);
|
|
|
+ } else if ("2002".equals(computingFormula)) { // 固定费用
|
|
|
+ //feePrice = Double.parseDouble(feeDto.getAdditionalAmount());
|
|
|
+ BigDecimal additionalAmount = new BigDecimal(Double.parseDouble(feeDto.getAdditionalAmount()));
|
|
|
+ feePrice = additionalAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN);
|
|
|
+ } else if ("4004".equals(computingFormula)) {
|
|
|
+ feePrice = new BigDecimal(Double.parseDouble(feeDto.getAmount()));
|
|
|
+ } else {
|
|
|
+ throw new IllegalArgumentException("暂不支持该类公式");
|
|
|
+ }
|
|
|
+ } else if ("6666".equals(feeDto.getPayerObjType())) {//车位相关
|
|
|
+ String computingFormula = feeDto.getComputingFormula();
|
|
|
+ if ("1001".equals(computingFormula)) { //面积*单价+附加费
|
|
|
+ ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
|
|
|
+ parkingSpaceDto.setCommunityId(feeDto.getCommunityId());
|
|
|
+ parkingSpaceDto.setPsId(feeDto.getPayerObjId());
|
|
|
+ List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
|
|
|
+
|
|
|
+ if (parkingSpaceDtos == null || parkingSpaceDtos.size() < 1) { //数据有问题
|
|
|
+ throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "未查到停车位信息,查询多条数据");
|
|
|
+ }
|
|
|
+ //feePrice = Double.parseDouble(feeDto.getSquarePrice()) * Double.parseDouble(parkingSpaceDtos.get(0).getArea()) + Double.parseDouble(feeDto.getAdditionalAmount());
|
|
|
+ BigDecimal squarePrice = new BigDecimal(Double.parseDouble(feeDto.getSquarePrice()));
|
|
|
+ BigDecimal builtUpArea = new BigDecimal(Double.parseDouble(parkingSpaceDtos.get(0).getArea()));
|
|
|
+ BigDecimal additionalAmount = new BigDecimal(Double.parseDouble(feeDto.getAdditionalAmount()));
|
|
|
+ feePrice = squarePrice.multiply(builtUpArea).add(additionalAmount).setScale(2, BigDecimal.ROUND_HALF_EVEN);
|
|
|
+ } else if ("2002".equals(computingFormula)) { // 固定费用
|
|
|
+ //feePrice = Double.parseDouble(feeDto.getAdditionalAmount());
|
|
|
+ BigDecimal additionalAmount = new BigDecimal(Double.parseDouble(feeDto.getAdditionalAmount()));
|
|
|
+ feePrice = additionalAmount.setScale(2, BigDecimal.ROUND_HALF_EVEN);
|
|
|
+ } else if ("4004".equals(computingFormula)) {
|
|
|
+ feePrice = new BigDecimal(Double.parseDouble(feeDto.getAmount()));
|
|
|
+ } else {
|
|
|
+ throw new IllegalArgumentException("暂不支持该类公式");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
BigDecimal receivedAmount = new BigDecimal(Double.parseDouble(paramInJson.getString("feePrice")));
|
|
|
BigDecimal cycles = receivedAmount.divide(feePrice, 2, BigDecimal.ROUND_HALF_EVEN);
|
|
|
paramInJson.put("tmpCycles", cycles);
|