From 2d079ac843ebcb335f2ef7d6952f9700a16fddde Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期三, 05 五月 2021 14:11:00 +0800
Subject: [PATCH] 游湖阿底阿妈
---
java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java | 74 ++++++++++++++++++++++++++++---------
1 files changed, 56 insertions(+), 18 deletions(-)
diff --git a/java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java b/java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java
index f8a5f17..4d23398 100755
--- a/java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java
+++ b/java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java
@@ -3,12 +3,9 @@
import com.java110.core.smo.IComputeFeeSMO;
import com.java110.dto.RoomDto;
import com.java110.dto.community.CommunityDto;
+import com.java110.dto.contract.ContractDto;
import com.java110.dto.contractRoom.ContractRoomDto;
-import com.java110.dto.fee.BillDto;
-import com.java110.dto.fee.BillOweFeeDto;
-import com.java110.dto.fee.FeeAttrDto;
-import com.java110.dto.fee.FeeConfigDto;
-import com.java110.dto.fee.FeeDto;
+import com.java110.dto.fee.*;
import com.java110.dto.owner.OwnerCarDto;
import com.java110.dto.owner.OwnerDto;
import com.java110.dto.parking.ParkingSpaceDto;
@@ -19,6 +16,7 @@
import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
import com.java110.intf.community.IRoomInnerServiceSMO;
import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.intf.store.IContractInnerServiceSMO;
import com.java110.intf.store.IContractRoomInnerServiceSMO;
import com.java110.intf.user.IOwnerCarInnerServiceSMO;
import com.java110.intf.user.IOwnerInnerServiceSMO;
@@ -38,12 +36,7 @@
import javax.script.ScriptEngineManager;
import java.math.BigDecimal;
import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* 璐圭敤璁$畻 鏈嶅姟绫�
@@ -78,6 +71,9 @@
@Autowired(required = false)
private IContractRoomInnerServiceSMO contractRoomInnerServiceSMOImpl;
+
+ @Autowired(required = false)
+ private IContractInnerServiceSMO contractInnerServiceSMOImpl;
@Override
public Date getFeeEndTime() {
@@ -143,6 +139,8 @@
computeFeePriceByRoom(feeDto, roomDto);
} else if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDto.getPayerObjType())) {//杞︿綅鐩稿叧
computeFeePriceByParkingSpace(feeDto);
+ }else if(FeeDto.PAYER_OBJ_TYPE_CONTRACT.equals(feeDto.getPayerObjType())) { //鎴垮眿鐩稿叧
+ computeFeePriceByContract(feeDto, roomDto);
}
}
@@ -182,6 +180,31 @@
* @param feeDto
*/
private void computeFeePriceByRoom(FeeDto feeDto, RoomDto roomDto) {
+ Map<String, Object> targetEndDateAndOweMonth = getTargetEndDateAndOweMonth(feeDto);
+ Date targetEndDate = (Date) targetEndDateAndOweMonth.get("targetEndDate");
+ double oweMonth = (double) targetEndDateAndOweMonth.get("oweMonth");
+
+ String computingFormula = feeDto.getComputingFormula();
+ double feePrice = getFeePrice(feeDto, roomDto);
+ feeDto.setFeePrice(feePrice);
+ //double month = dayCompare(feeDto.getEndTime(), DateUtil.getCurrentDate());
+ BigDecimal price = new BigDecimal(feeDto.getFeePrice());
+ price = price.multiply(new BigDecimal(oweMonth));
+ feeDto.setFeePrice(price.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+ feeDto.setDeadlineTime(targetEndDate);
+
+ //鍔ㄦ�佽垂鐢�
+ if ("4004".equals(computingFormula) && !FeeDto.STATE_FINISH.equals(feeDto.getState())) {
+ feeDto.setAmountOwed(feeDto.getFeePrice() + "");
+ //feeDto.setDeadlineTime(DateUtil.getCurrentDate()); 娆犺垂鏃ユ湡涓嶅鍏堟敞閲�
+ }
+ }
+ /**
+ * 鏍规嵁鎴垮眿鏉ョ畻鍗曚环
+ *
+ * @param feeDto
+ */
+ private void computeFeePriceByContract(FeeDto feeDto, RoomDto roomDto) {
Map<String, Object> targetEndDateAndOweMonth = getTargetEndDateAndOweMonth(feeDto);
Date targetEndDate = (Date) targetEndDateAndOweMonth.get("targetEndDate");
double oweMonth = (double) targetEndDateAndOweMonth.get("oweMonth");
@@ -368,15 +391,30 @@
return ownerDtos.get(0);
}
- if(FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDto.getPayerObjType())){
+ if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDto.getPayerObjType())) {
OwnerCarDto ownerCarDto = new OwnerCarDto();
ownerCarDto.setCarId(feeDto.getPayerObjId());
ownerCarDto.setCommunityId(feeDto.getCommunityId());
List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
- Assert.listOnlyOne(ownerCarDtos,"杞﹁締涓嶅瓨鍦�");
+ Assert.listOnlyOne(ownerCarDtos, "杞﹁締涓嶅瓨鍦�");
ownerDto = new OwnerDto();
ownerDto.setOwnerId(ownerCarDtos.get(0).getOwnerId());
+ ownerDto.setCommunityId(feeDto.getCommunityId());
+ List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
+ Assert.listOnlyOne(ownerDtos, "涓氫富涓嶅瓨鍦�");
+ return ownerDtos.get(0);
+ }
+
+ if (FeeDto.PAYER_OBJ_TYPE_CONTRACT.equals(feeDto.getPayerObjType())) {
+ ContractDto contractDto = new ContractDto();
+ contractDto.setContractId(feeDto.getPayerObjId());
+ contractDto.setCommunityId(feeDto.getCommunityId());
+ List<ContractDto> contractDtos = contractInnerServiceSMOImpl.queryContracts(contractDto);
+
+ Assert.listOnlyOne(contractDtos, "杞﹁締涓嶅瓨鍦�");
+ ownerDto = new OwnerDto();
+ ownerDto.setOwnerId(contractDtos.get(0).getObjId());
ownerDto.setCommunityId(feeDto.getCommunityId());
List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
Assert.listOnlyOne(ownerDtos, "涓氫富涓嶅瓨鍦�");
@@ -795,10 +833,10 @@
//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(0);
- for(ContractRoomDto tmpContractRoomDto: contractRoomDtos){
+ for (ContractRoomDto tmpContractRoomDto : contractRoomDtos) {
builtUpArea = builtUpArea.add(new BigDecimal(Double.parseDouble(tmpContractRoomDto.getBuiltUpArea())));
}
- feeDto.setBuiltUpArea(builtUpArea.doubleValue()+"");
+ feeDto.setBuiltUpArea(builtUpArea.doubleValue() + "");
BigDecimal additionalAmount = new BigDecimal(Double.parseDouble(feeDto.getAdditionalAmount()));
feePrice = squarePrice.multiply(builtUpArea).add(additionalAmount).setScale(3, BigDecimal.ROUND_HALF_EVEN);
} else if ("2002".equals(computingFormula)) { // 鍥哄畾璐圭敤
@@ -904,9 +942,9 @@
private BigDecimal computeContractCustomizeFormula(FeeDto feeDto, List<ContractRoomDto> contractRoomDtos) {
BigDecimal total = new BigDecimal(0.0);
- for(ContractRoomDto contractRoomDto :contractRoomDtos){
- total = total.add(computeRoomCustomizeFormula(feeDto,contractRoomDto));
- }
+ for (ContractRoomDto contractRoomDto : contractRoomDtos) {
+ total = total.add(computeRoomCustomizeFormula(feeDto, contractRoomDto));
+ }
return total;
}
--
Gitblit v1.8.0