ruoyi-system/src/main/java/com/ruoyi/system/mapper/TBillMapper.java
@@ -10,6 +10,7 @@ import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** @@ -51,4 +52,10 @@ * @return */ List<ScreenRentRankVO> getStreetRentRank(@Param("businessDeptId") String businessDeptId); /** * 查询季付账单 * @param businessDeptId * @return */ List<TBill> getJiFuBillList(@Param("businessDeptId") String businessDeptId, @Param("first") Date first, @Param("last") Date last); } ruoyi-system/src/main/java/com/ruoyi/system/mapper/THouseMapper.java
@@ -23,5 +23,10 @@ List<THouse> houseList(@Param("req") THouseQuery query, @Param("pageInfo") PageInfo<THouse> pageInfo); List<HouseVO> userHistoryList(@Param("req")TUserHistoryQuery query, @Param("pageInfo")PageInfo<HouseVO> pageInfo); /** * 获取本季度已出租面积 * @param businessDeptId * @return */ Double getRentedArea(@Param("businessDeptId") String businessDeptId); } ruoyi-system/src/main/java/com/ruoyi/system/service/TBillService.java
@@ -15,6 +15,7 @@ import javax.validation.constraints.NotEmpty; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.function.Consumer; @@ -96,4 +97,20 @@ * @return */ List<ScreenRentRankVO> getStreetRentRank(String businessDeptId); /** * 查询季付账单 * @param businessDeptId * @return */ List<TBill> getJiFuBillList(String businessDeptId); /** * 查询当前季度的季付账单 * @param businessDeptId * @param first * @param last * @return */ List<TBill> getJiFuBillListByTime(String businessDeptId, Date first, Date last); } ruoyi-system/src/main/java/com/ruoyi/system/service/THouseService.java
@@ -20,4 +20,11 @@ PageInfo<THouse> houseList(THouseQuery query); PageInfo<HouseVO> userHistoryList(TUserHistoryQuery query); /** * 获取本季度已出租面积 * @param businessDeptId * @return */ Double getRentedArea(String businessDeptId); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ScreenService.java
@@ -1,6 +1,5 @@ package com.ruoyi.system.service.impl; import com.ruoyi.common.enums.BillTypeEnum; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.model.TBill; @@ -41,6 +40,9 @@ */ public ScreenTopStaticsDataVO getTopStaticsData() { String businessDeptId = SecurityUtils.getBusinessDeptId(); Map<String, Date> quarterDate = DateUtils.getQuarterDate(new Date()); Date first = quarterDate.get("first"); Date last = quarterDate.get("last"); ScreenTopStaticsDataVO vo = new ScreenTopStaticsDataVO(); //房屋总面积 List<THouse> houseList = tHouseService.lambdaQuery() @@ -51,16 +53,10 @@ .reduce(0D, Double::sum); vo.setHouseTotalArea(totalArea); //已出租面积 Double totalRentedArea = houseList.stream() .filter(item -> !item.getLeaseStatus().equals("1")) .map(item -> Double.parseDouble(item.getHouseArea())) .reduce(0D, Double::sum); Double totalRentedArea = tHouseService.getRentedArea(businessDeptId); vo.setHouseRentedArea(totalRentedArea); //总计应收租金 List<TBill> billList = tBillService.lambdaQuery() .eq(!businessDeptId.equals("0"), TBill::getBusinessDeptId, businessDeptId) .eq(TBill::getBillType, BillTypeEnum.Zujin.getCode()) .list(); List<TBill> billList = tBillService.getJiFuBillList(businessDeptId); BigDecimal totalReceivableRent = billList.stream() .filter(item -> !item.getPayFeesStatus().equals("5")) .map(TBill::getPayableFeesMoney) @@ -78,6 +74,7 @@ vo.setNewTenantCount(newTenantCount); //总计租户数 系统租户列表里有生效合同绑定的租户总数。 List<TContract> tContracts = tContractService.lambdaQuery() .eq(TContract::getPayType,2) //季付 .in(TContract::getStatus, "4", "5", "6", "7", "8", "9") .eq(!businessDeptId.equals("0"), TContract::getBusinessDeptId, businessDeptId) .list(); @@ -86,15 +83,7 @@ .distinct() .count(); vo.setTotalTenantCount((int) count); Map<String, Date> quarterDate = DateUtils.getQuarterDate(new Date()); Date first = quarterDate.get("first"); Date last = quarterDate.get("last"); List<TBill> currentQuarterBillList = tBillService.lambdaQuery() .eq(!businessDeptId.equals("0"), TBill::getBusinessDeptId, businessDeptId) .between(TBill::getPayableFeesTime, first, last) .eq(TBill::getBillType, BillTypeEnum.Zujin.getCode()) .ne(TBill::getPayFeesStatus, 5) .list(); List<TBill> currentQuarterBillList = tBillService.getJiFuBillListByTime(businessDeptId, first, last); //本季度已交租金 BigDecimal totalRentPaid = currentQuarterBillList.stream() .map(TBill::getPayFeesMoney) @@ -115,12 +104,7 @@ .divide(BigDecimal.valueOf(10000L), 2, RoundingMode.HALF_UP); vo.setTotalRentOwe(totalRentOwe); //总计欠费 List<TBill> allBillList = tBillService.lambdaQuery() .eq(TBill::getBillType, BillTypeEnum.Zujin.getCode()) .eq(!businessDeptId.equals("0"), TBill::getBusinessDeptId, businessDeptId) //.le(TBill::getPayableFeesTime, last) .list(); BigDecimal totalRentOweAll = allBillList.stream() BigDecimal totalRentOweAll = billList.stream() .map(TBill::getOutstandingMoney) .reduce(BigDecimal.ZERO, BigDecimal::add) .divide(BigDecimal.valueOf(10000L), 2, RoundingMode.HALF_UP); @@ -159,11 +143,7 @@ Date quarterEnd = quarterDate.get("last"); // 获取该季度的账单数据 List<TBill> quarterBills = tBillService.lambdaQuery() .between(TBill::getPayableFeesTime, quarterStart, quarterEnd) .eq(TBill::getBillType, BillTypeEnum.Zujin.getCode()) .eq(!businessDeptId.equals("0"), TBill::getBusinessDeptId, businessDeptId) .list(); List<TBill> quarterBills = tBillService.getJiFuBillListByTime(businessDeptId, quarterStart, quarterEnd); // 计算季度租金收入总和 BigDecimal quarterIncome = quarterBills.stream() ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java
@@ -588,4 +588,25 @@ public List<ScreenRentRankVO> getStreetRentRank(String businessDeptId) { return baseMapper.getStreetRentRank(businessDeptId); } /** * 查询季付账单 * @param businessDeptId * @return */ @Override public List<TBill> getJiFuBillList(String businessDeptId) { return baseMapper.getJiFuBillList(businessDeptId,null,null); } /** * 查询当前季度的季付账单 * @param businessDeptId * @param first * @param last * @return */ @Override public List<TBill> getJiFuBillListByTime(String businessDeptId, Date first, Date last) { return baseMapper.getJiFuBillList(businessDeptId,first,last); } } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/THouseServiceImpl.java
@@ -78,4 +78,14 @@ pageInfo.setRecords(list); return pageInfo; } /** * 获取本季度已出租面积 * * @param businessDeptId * @return */ @Override public Double getRentedArea(String businessDeptId) { return baseMapper.getRentedArea(businessDeptId); } } ruoyi-system/src/main/resources/mapper/system/TBillMapper.xml
@@ -213,6 +213,7 @@ LEFT JOIN t_contract tc ON tc.house_id = th.id LEFT JOIN t_bill tb ON tc.id = tb.contract_id <where> tc.pay_type = 2 AND tb.pay_fees_status != 5 <if test="businessDeptId != 0"> AND th.business_dept_id = #{businessDeptId} </if> @@ -220,4 +221,17 @@ GROUP BY ts.id ORDER BY rentAmount DESC </select> <select id="getJiFuBillList" resultType="com.ruoyi.system.model.TBill" parameterType="java.lang.String"> SELECT tb.* FROM t_bill tb LEFT JOIN t_contract tt ON tb.contract_id = tt.id <where> tt.pay_type = 2 AND tb.bill_type = ${@com.ruoyi.common.enums.BillTypeEnum@Zujin.getCode()} AND tb.pay_fees_status != 5 <if test="businessDeptId != null and businessDeptId != 0"> AND tb.business_dept_id = #{businessDeptId} </if> <if test="first!=null and last !=null"> AND tb.payable_fees_time BETWEEN #{first} AND #{last} </if> GROUP BY tt.id </where> </select> </mapper> ruoyi-system/src/main/resources/mapper/system/TContractMapper.xml
@@ -132,7 +132,7 @@ FROM t_contract tc <where> -- 筛选本月签订的合同 DATE_FORMAT(tc.sign_time, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m') AND tc.status IN ("4", "5", "6", "7", "8", "9") DATE_FORMAT(tc.sign_time, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m') AND tc.status IN ("4", "5", "6", "7", "8", "9") AND tc.pay_type = 2 -- 且租户在本月前从未签订过任何合同 AND NOT EXISTS ( SELECT 1 ruoyi-system/src/main/resources/mapper/system/THouseMapper.xml
@@ -86,5 +86,17 @@ AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </select> <select id="getRentedArea" resultType="java.lang.Double"> SELECT COALESCE(SUM(t1.house_area),0) FROM t_house t1 LEFT JOIN t_contract t2 ON t1.id = t2.house_id <where> t2.pay_type = 2 AND t1.lease_status != 1 <if test="businessDeptId!=0"> AND t1.business_dept_id = #{businessDeptId} </if> AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> GROUP BY t1.id </select> </mapper>