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.annotation.Log; 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.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUserApplet; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DictUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.bo.ProcessTaskListBO; import com.ruoyi.system.dto.TBillDto; import com.ruoyi.system.dto.TInvoiceDTO; import com.ruoyi.system.model.*; import com.ruoyi.system.query.*; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.*; import com.ruoyi.web.controller.tool.MyFileUtil; 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.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; 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; @Autowired private TFaultRepairMessageService tFaultRepairMessageService; @Autowired private TCheckAcceptRecordService checkAcceptRecordService; @Autowired private TTenantService tenantService; @Autowired private ISysUserService sysUserService; @Autowired private TContractRentTypeService contractRentTypeService; @Autowired private StateProcessTemplateService processTemplateService; public static void main(String[] args) throws IOException { File file = new File("D:\\wechatFiles\\WeChat Files\\wxid_25nztsudcon722\\FileStorage\\File\\2025-03\\2.mp3"); MultipartFile multipartFile = MyFileUtil.fileToMultipartFile(file, "3333"); } /** * 获取轮播图管理列表 */ @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().orderByDesc(TBill::getPayableFeesTime).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()) && e.getPayFeesStatus().equals("3")).findFirst().orElse(null); if (bill == null) { bill = bills.stream().filter(e -> e.getContractId().equals(contract.getId())).findFirst().orElse(null); } if (tHouse != null && bill != null) { MyHouseVO myToDoVO = new MyHouseVO(); myToDoVO.setId(contract.getId()); myToDoVO.setHouseAddress(tHouse.getHouseAddress()); myToDoVO.setMonthRent(contract.getMonthRent()); myToDoVO.setPayType(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_PAY_TYPE, contract.getPayType())); myToDoVO.setMonth(bill.getPayFeesTime() == null ? bill.getPayableFeesTime().getMonth().getValue() + "月" : bill.getPayFeesTime().getMonth().getValue() + "月"); 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) { if (tBill.getPayFeesTime()==null){ continue; } 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 = "租户-当前在租房源-租赁详情") @GetMapping(value = "/tenant/myHouseDetail") public R myHouseDetail(String id) { LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet(); if (loginUserApplet != null) { MyHouseVO myToDoVO = new MyHouseVO(); TContract contract = contractService.getById(id); List bills = billService.lambdaQuery().orderByDesc(TBill::getPayableFeesTime).list(); THouse tHouse = houseService.getById(contract.getHouseId()); TBill bill = bills.stream().filter(e -> e.getContractId().equals(contract.getId()) && e.getPayFeesStatus().equals("3")).findFirst().orElse(null); if (bill == null) { bill = bills.stream().filter(e -> e.getContractId().equals(contract.getId())).findFirst().orElse(null); } if (tHouse != null && bill != null) { myToDoVO.setId(contract.getId()); myToDoVO.setHouseAddress(tHouse.getHouseAddress()); myToDoVO.setMonthRent(contract.getMonthRent()); myToDoVO.setPayType(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_PAY_TYPE, contract.getPayType())); myToDoVO.setMonth(bill.getPayFeesTime() == null ? bill.getPayableFeesTime().getMonth().getValue() + "月" : bill.getPayFeesTime().getMonth().getValue() + "月"); 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) { if (tBill.getPayFeesTime()==null){ continue; } PayListVO payListVO = new PayListVO(); payListVO.setPayFeesTime(DateUtils.localDateTimeToStringYear(tBill.getPayFeesTime())); payListVO.setPayFeesMoney("-" + tBill.getPayFeesMoney() + "元"); payList.add(payListVO); } myToDoVO.setPayList(payList); } return R.ok(myToDoVO); } else { return R.ok(new MyHouseVO()); } } @ApiOperation(value = "管理员-我的待办") @PostMapping(value = "/admin/myToDo") public R adminMyToDo() { MyToDoVO myToDoVO = new MyToDoVO(); LoginUser loginUser = tokenService.getLoginUser(); if (loginUser != null) { // long examineCount = contractService.count(new LambdaQueryWrapper() // .eq(TContract::getStatus, 2)); ProcessTaskListBO processTaskListBO = new ProcessTaskListBO(); PageInfo processTaskListVOPageInfo = processTemplateService.waitTaskPage(processTaskListBO); myToDoVO.setExamineCount((int) processTaskListVOPageInfo.getTotal()); List contractIds = billService.lambdaQuery().eq(TBill::getPayFeesStatus, 4).list() .stream().map(TBill::getContractId).collect(Collectors.toList()); if(contractIds.isEmpty()){ myToDoVO.setOverdueCount(0); }else{ 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); } /** * 获取验收记录管理列表 */ @ApiOperation(value = "管理员-房屋验收单列表") @PostMapping(value = "/admin/houseCheck") public R> houseCheck(@RequestBody TCheckAcceptRecordAppletQuery query) { return R.ok(checkAcceptRecordService.pageListApplet(query)); } /** * 查看验收记录详情 */ @ApiOperation(value = "管理员-查看验收记录详情") @GetMapping(value = "/getDetailById") public R getDetailById(@RequestParam String id) { TCheckAcceptRecord checkAcceptRecord = checkAcceptRecordService.getById(id); // checkAcceptRecord.setCleanSituation(checkAcceptRecord.getCleanSituation()); // checkAcceptRecord.setOverallSituation(StringUtils.hasLength(checkAcceptRecord.getOverallSituation())?(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CHECK_SITUATION,checkAcceptRecord.getOverallSituation())):""); // checkAcceptRecord.setDeviceSituation(StringUtils.hasLength(checkAcceptRecord.getDeviceSituation())?(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CHECK_SITUATION,checkAcceptRecord.getDeviceSituation())):""); // checkAcceptRecord.setFurnitureSituation(StringUtils.hasLength(checkAcceptRecord.getDeviceSituation())?(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CHECK_SITUATION,checkAcceptRecord.getFurnitureSituation())):""); TCheckAcceptRecordVO checkAcceptRecordVO = new TCheckAcceptRecordVO(); BeanUtils.copyProperties(checkAcceptRecord, checkAcceptRecordVO); // 查询合同信息 checkAcceptRecordVO.setContract(contractService.getById(checkAcceptRecord.getContractId())); // 查询房屋信息 checkAcceptRecordVO.setHouse(houseService.getById(checkAcceptRecord.getHouseId())); return R.ok(checkAcceptRecordVO); } @ApiOperation(value = "管理员-新增验收") @PostMapping(value = "/addRecord") public R addRecord(@Validated @RequestBody TCheckAcceptRecord dto) { dto.setAcceptanceTime(LocalDateTime.now()); dto.setCheckTime(LocalDateTime.now()); LocalDate now = LocalDate.now(); String replace = (now + "").replace("-", ""); int size = checkAcceptRecordService.list(new LambdaQueryWrapper() .likeRight(TCheckAcceptRecord::getAcceptanceTime, LocalDate.now())).size(); dto.setCode(replace.substring(2)+String.format("%03d", size+1)); dto.setStatus(true); // 添加验收记录 dto.setCheckPerson(tokenService.getLoginUser().getUser().getNickName()); checkAcceptRecordService.updateById(dto); return R.ok(); } /** * 获取报修管理列表 */ @ApiOperation(value = "管理员-房屋维修分页列表") @PostMapping(value = "/housePageList") public R> pageList(@RequestBody TFaultRepairMessageAppletQuery query) { return R.ok(tFaultRepairMessageService.pageListApplet(query)); } /** * 查看报修详情 */ @ApiOperation(value = "管理员-房屋维修查看详情") @GetMapping(value = "/getDetailByIdRepair") public R getDetailByIdRepair(@RequestParam String id) { TFaultRepairMessageVO faultRepairMessageVO = tFaultRepairMessageService.getDetailById(id); return R.ok(faultRepairMessageVO); } /** * 处理维修 */ @Log(title = "报修信息-处理维修", businessType = BusinessType.UPDATE) @ApiOperation(value = "管理员-维修处理") @PostMapping(value = "/handle") public R handle(@Validated @RequestBody TFaultRepairMessage faultRepairMessage) { faultRepairMessage.setStatus(2); return R.ok(tFaultRepairMessageService.updateById(faultRepairMessage)); } /** * 获取租户管理列表 */ @ApiOperation(value = "获取租户分页列表") @PostMapping(value = "/pageList") public R> pageList(@RequestBody TTenantAppletQuery query) { return R.ok(tenantService.pageListApplet(query)); } /** * 获取租户管理列表 */ @ApiOperation(value = "获取租户详情") @GetMapping(value = "/getTenantDetailById") public R getTenantDetailById(@RequestParam String id) { return R.ok(tenantService.getById(id)); } /** * 租户详情-租房信息 */ @ApiOperation(value = "租户详情-租房信息列表") @GetMapping(value = "/listHouse") public R> listHouse(@RequestParam String id) { List res = tenantService.listHouse(id); return R.ok(res); } /** * 租户详情-租房信息 */ @ApiOperation(value = "租户详情-合同列表") @GetMapping(value = "/listContract") public R> listContract(@RequestParam String id) { List res = tenantService.listContract(id); return R.ok(res); } @ApiOperation(value = "租户详情-缴费账单列表") @PostMapping("/listBill") public R> listBill(@RequestBody TBillAppletQuery query){ PageInfo pageInfo = tenantService.listBill(query); return R.ok(pageInfo); } @ApiOperation(value = "租户详情-缴费账单-账单详情") @PostMapping("/billDetail") public R billDetail(String id){ TBillVO res = new TBillVO(); TBill bill = billService.getById(id); BeanUtils.copyProperties(bill, res); TContract contract = contractService.getById(bill.getContractId()); THouse tHouse = houseService.getById(contract.getHouseId()); res.setHouse(tHouse); res.setConcatStartTime(contract.getStartTime()); res.setConcatEndTime(contract.getEndTime()); res.setPartyOnePhone(contract.getPartyOnePhone()); res.setPartyOnePerson(contract.getPartyTwoPerson()); res.setMonthRent(bill.getPayableFeesMoney()); res.setPayType(contract.getPayType()); return R.ok(res); } @ApiOperation(value = "管理员-我的审批分页列表") @PostMapping("/listExamine") public R> examineList(@RequestBody TExamineAppletQuery dto){ LoginUser loginUser = tokenService.getLoginUser(); if (loginUser==null){ return R.fail(401,"登录失效"); } SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId()); dto.setUserName(sysUser.getUserName()); PageInfo pageInfo = tenantService.examineList(dto); return R.ok(pageInfo); } @ApiOperation(value = "管理员-审批详情") @GetMapping("/examineDetail") public R examineDetail(@RequestParam String id){ TContractVO res = new TContractVO(); TContract contract = contractService.getById(id); BeanUtils.copyProperties(contract,res); res.setPayType(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_PAY_TYPE,res.getPayType())); res.setStatus(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CONTRACT_STATUS,res.getStatus())); TContractRentType contractRentType = contractRentTypeService.lambdaQuery().eq(TContractRentType::getContractId, id).one(); if (contractRentType!=null){ BeanUtils.copyProperties(contractRentType,res); } TContract oldContract = contractService.getOne(new LambdaQueryWrapper() .eq(TContract::getHouseId,contract.getHouseId()) .eq(TContract::getStatus, 4) .le(TContract::getStartTime, LocalDateTime.now()) .ge(TContract::getEndTime, LocalDateTime.now())); THouse house = houseService.getById(contract.getHouseId()); if (oldContract!=null){ house.setTenantType(oldContract.getPayType()); } res.setHouse(house); List list = billService.lambdaQuery() .eq(TBill::getContractId, id) .in(TBill::getPayFeesStatus, Arrays.asList("1,4")) .list(); BigDecimal payMoney = new BigDecimal("0"); for (TBill tBill : list) { payMoney = payMoney.add(tBill.getPayFeesMoney()).add(tBill.getPayableFeesPenalty()); } TCheckAcceptRecord tCheckAcceptRecord = checkAcceptRecordService.lambdaQuery().eq(TCheckAcceptRecord::getContractId, id).one(); res.setCheckResult(Objects.nonNull(tCheckAcceptRecord)?tCheckAcceptRecord.getCheckResult():false); res.setPayMoney(payMoney); return R.ok(res); } @ApiOperation(value = "管理员-我的审批-撤销") @GetMapping("/cancel") public R cancel(@RequestParam String id){ return R.ok(); } @ApiOperation(value = "管理员-我的审批-审批") @GetMapping("/examine") public R examine(@RequestParam String id){ return R.ok(); } }