package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.constant.DictConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.model.LoginUserApplet; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DictUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.dto.TBillDto; import com.ruoyi.system.dto.TInvoiceDTO; import com.ruoyi.system.model.*; import com.ruoyi.system.query.TBannerQuery; import com.ruoyi.system.query.TBillQuery; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.MyHouseVO; import com.ruoyi.system.vo.MyToDoVO; import com.ruoyi.system.vo.PayListVO; import com.ruoyi.system.vo.TBillVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import jdk.nashorn.internal.parser.Token; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** *

* 租金账单 前端控制器 *

* * @author xiaochen * @since 2025-01-17 */ @Api(tags = "首页") @RestController @RequestMapping("/t-index") public class IndexController { @Autowired private TBannerService bannerService; @Autowired private TokenService tokenService; @Autowired private TContractService contractService; @Autowired private TBillService billService; @Autowired private THouseService houseService; /** * 获取轮播图管理列表 */ @ApiOperation(value = "获取轮播图列表") @PostMapping(value = "/list") public R> list(@RequestBody TBannerQuery query) { return R.ok(bannerService.list(query)); } /** * 获取轮播图管理列表 */ @ApiOperation(value = "租户-我的待办") @PostMapping(value = "/tenant/myToDo") public R tenantMyToDo() { MyToDoVO myToDoVO = new MyToDoVO(); LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet(); if (loginUserApplet!=null){ long contractCount = contractService.count(new LambdaQueryWrapper() .eq(TContract::getStatus, 3).eq(TContract::getTenantId, loginUserApplet.getUserId())); myToDoVO.setContractCount((int) contractCount); List contractIds = contractService.lambdaQuery().eq(TContract::getTenantId, loginUserApplet.getUserId()).list() .stream().map(TContract::getId).collect(Collectors.toList()); if (CollectionUtils.isEmpty(contractIds)){ myToDoVO.setBillCount(0); myToDoVO.setContractCount(0); return R.ok(myToDoVO); } int billCount = billService.lambdaQuery().in(TBill::getContractId, contractIds).eq(TBill::getPayFeesStatus, 1).list().size(); myToDoVO.setBillCount(billCount); }else { myToDoVO.setBillCount(0); myToDoVO.setContractCount(0); } return R.ok(myToDoVO); } @ApiOperation(value = "租户-当前在租房源") @PostMapping(value = "/tenant/myHouse") public R> myHouse() { List myHouseVOS = new ArrayList<>(); LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet(); if (loginUserApplet!=null){ List contractList = contractService.lambdaQuery().eq(TContract::getTenantId, loginUserApplet.getUserId()) .eq(TContract::getStatus, 4).list(); List houseList = houseService.list(); List bills = billService.lambdaQuery().eq(TBill::getPayFeesStatus,3).orderByDesc(TBill::getPayFeesTime).list(); for (TContract contract : contractList) { THouse tHouse = houseList.stream().filter(e -> e.getId().equals(contract.getHouseId())).findFirst().orElse(null); TBill bill = bills.stream().filter(e -> e.getContractId().equals(contract.getId())).findFirst().orElse(null); if (tHouse!=null&& bill!=null){ MyHouseVO myToDoVO = new MyHouseVO(); myToDoVO.setHouseAddress(tHouse.getHouseAddress()); myToDoVO.setMonthRent(contract.getMonthRent()); myToDoVO.setPayType(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_PAY_TYPE,contract.getPayType())); myToDoVO.setMonth(bill.getPayFeesTime().getMonth()+""); myToDoVO.setHouseArea(tHouse.getHouseArea()); myToDoVO.setHouseType(tHouse.getHouseType()); myToDoVO.setEndTime(DateUtils.localDateTimeToStringYear(contract.getEndTime())); myToDoVO.setStartTime(DateUtils.localDateTimeToStringYear(contract.getStartTime())); myToDoVO.setPropertyRightPerson(tHouse.getPropertyRightPerson()); myToDoVO.setPhone(tHouse.getPhone()); List billList = bills.stream().filter(e -> e.getContractId().equals(contract.getId())).collect(Collectors.toList()); List payList = new ArrayList<>(); for (TBill tBill : billList) { PayListVO payListVO = new PayListVO(); payListVO.setPayFeesTime(DateUtils.localDateTimeToStringYear(tBill.getPayFeesTime())); payListVO.setPayFeesMoney("-"+tBill.getPayFeesMoney()+"元"); payList.add(payListVO); } myToDoVO.setPayList(payList); myHouseVOS.add(myToDoVO); } } return R.ok(myHouseVOS); }else { return R.ok(myHouseVOS); } } @ApiOperation(value = "管理员-我的待办") @PostMapping(value = "/admin/myToDo") public R adminMyToDo() { MyToDoVO myToDoVO = new MyToDoVO(); LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet(); if (loginUserApplet!=null){ long examineCount = contractService.count(new LambdaQueryWrapper() .eq(TContract::getStatus, 2)); myToDoVO.setExamineCount((int) examineCount); List contractIds = billService.lambdaQuery().eq(TBill::getPayFeesStatus, 4).list() .stream().map(TBill::getContractId).collect(Collectors.toList()); int overdueCount = contractService.lambdaQuery().in(TContract::getId, contractIds).list() .stream().map(TContract::getTenantId).distinct().collect(Collectors.toList()).size(); myToDoVO.setOverdueCount(overdueCount); }else { myToDoVO.setExamineCount(0); myToDoVO.setOverdueCount(0); } return R.ok(myToDoVO); } }