|
|
@@ -19,7 +19,9 @@ import com.izouma.zhumj.repo.*;
|
|
|
import com.izouma.zhumj.repo.client.DepositRefundApplyRepo;
|
|
|
import com.izouma.zhumj.repo.sale.ContractBillRepo;
|
|
|
import com.izouma.zhumj.repo.sale.ContractRepo;
|
|
|
+import com.izouma.zhumj.repo.sale.CustomerRepo;
|
|
|
import com.izouma.zhumj.security.Authority;
|
|
|
+import com.izouma.zhumj.service.sale.CustomerService;
|
|
|
import com.izouma.zhumj.service.sale.SaleTargetService;
|
|
|
import com.izouma.zhumj.utils.SecurityUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
@@ -31,10 +33,12 @@ import org.springframework.data.domain.Pageable;
|
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.persistence.criteria.Predicate;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -60,6 +64,7 @@ public class FinancialService {
|
|
|
private DepositRefundApplyRepo depositRefundApplyRepo;
|
|
|
private RechargeRecordService rechargeRecordService;
|
|
|
private ExtraFeeRepo extraFeeRepo;
|
|
|
+ private CustomerRepo customerRepo;
|
|
|
|
|
|
public Page<BillReview> billReview(BillStatus billStatus, Pageable pageable) {
|
|
|
Page<ContractBill> page = contractBillRepo.findByStatus(billStatus, pageable);
|
|
|
@@ -193,18 +198,30 @@ public class FinancialService {
|
|
|
return realTimeFees;
|
|
|
}
|
|
|
|
|
|
- public Page<ContractDeposit> contractDeposit(Pageable pageable) {
|
|
|
- if (SecurityUtils.getAuthenticatedUser()
|
|
|
- .getAuthorities()
|
|
|
- .contains(Authority.getInstance(Authority.NAME.ROLE_SALE))) {
|
|
|
- Page<Contract> page = contractRepo.findAll((Specification<Contract>) (root, criteriaQuery, criteriaBuilder) ->
|
|
|
- criteriaBuilder.equal(
|
|
|
- root.get("saleName"),
|
|
|
- SecurityUtils.getAuthenticatedUser().getNickname()
|
|
|
- ), pageable);
|
|
|
- return getContractDeposits(pageable, page);
|
|
|
- }
|
|
|
- Page<Contract> page = contractRepo.findAll(pageable);
|
|
|
+ public Page<ContractDeposit> contractDeposit(String search, LocalDate start, LocalDate end, Pageable pageable) {
|
|
|
+
|
|
|
+ Page<Contract> page = contractRepo
|
|
|
+ .findAll((Specification<Contract>) (root, criteriaQuery, criteriaBuilder) -> {
|
|
|
+ List<Predicate> and = new ArrayList<>();
|
|
|
+ if (SecurityUtils.getAuthenticatedUser()
|
|
|
+ .getAuthorities()
|
|
|
+ .contains(Authority.getInstance(Authority.NAME.ROLE_SALE))) {
|
|
|
+ and.add(criteriaBuilder.equal(
|
|
|
+ root.get("saleName"),
|
|
|
+ SecurityUtils.getAuthenticatedUser().getNickname()
|
|
|
+ ));
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(search)) {
|
|
|
+ List<Long> customerIds = customerRepo.findByCoFullNameLikeOrCoSimpleNameLike(search, search)
|
|
|
+ .stream().map(Customer::getId).collect(Collectors.toList());
|
|
|
+ and.add(root.get("customerId").in(customerIds));
|
|
|
+ }
|
|
|
+ if (start != null & end != null) {
|
|
|
+ criteriaBuilder.between(root.get("contractBeginTime"), start.atStartOfDay(), end
|
|
|
+ .atTime(LocalTime.MAX));
|
|
|
+ }
|
|
|
+ return criteriaBuilder.and(and.toArray(new Predicate[0]));
|
|
|
+ }, pageable);
|
|
|
return getContractDeposits(pageable, page);
|
|
|
}
|
|
|
|
|
|
@@ -232,6 +249,7 @@ public class FinancialService {
|
|
|
.map(StoreInfo::getStoreName)
|
|
|
.collect(Collectors.toList()), ","))
|
|
|
.deposit(contract.getFlowBet())
|
|
|
+ .monthlyRent(contract.getMonthlyRent())
|
|
|
.build()).collect(Collectors.toList());
|
|
|
return new PageImpl<>(list, pageable, page.getTotalElements());
|
|
|
}
|
|
|
@@ -368,7 +386,8 @@ public class FinancialService {
|
|
|
total = total.add(individualRent);
|
|
|
|
|
|
List<FeeType> feeTypeList = feeTypeRepo.findByStoreId(storeInfo.getId());
|
|
|
- List<RoomFee> roomFeeList = roomFeeRepo.findByStoreIdAndSettleTimeBetweenAndEnabled(storeInfo.getId(), start, end, true);
|
|
|
+ List<RoomFee> roomFeeList = roomFeeRepo
|
|
|
+ .findByStoreIdAndSettleTimeBetweenAndEnabled(storeInfo.getId(), start, end, true);
|
|
|
List<PersonalFeeType> personalFeeTypeList = personalFeeTypeRepo.findByStoreId(storeInfo.getId());
|
|
|
List<PersonalFee> personalFeeList = personalFeeRepo
|
|
|
.findByStoreIdAndSettleTimeBetweenAndEnabled(storeInfo.getId(), start, end, true);
|