| | |
| | | |
| | | |
| | | 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.dto.TBillDto; |
| | | import com.ruoyi.system.dto.TInvoiceDTO; |
| | | import com.ruoyi.system.model.*; |
| | | import com.ruoyi.system.bo.ProcessTaskListBO; |
| | | import com.ruoyi.system.model.TBanner; |
| | | import com.ruoyi.system.model.TBill; |
| | | import com.ruoyi.system.model.TCheckAcceptRecord; |
| | | import com.ruoyi.system.model.TContract; |
| | | import com.ruoyi.system.model.TContractRentType; |
| | | import com.ruoyi.system.model.TFaultRepairMessage; |
| | | import com.ruoyi.system.model.THouse; |
| | | import com.ruoyi.system.model.TTenant; |
| | | import com.ruoyi.system.query.TBannerQuery; |
| | | import com.ruoyi.system.query.TBillQuery; |
| | | import com.ruoyi.system.query.TBillAppletQuery; |
| | | import com.ruoyi.system.query.TCheckAcceptRecordAppletQuery; |
| | | import com.ruoyi.system.query.TCheckAcceptRecordQuery; |
| | | import com.ruoyi.system.service.*; |
| | | import com.ruoyi.system.vo.*; |
| | | import com.ruoyi.system.query.TExamineAppletQuery; |
| | | import com.ruoyi.system.query.TFaultRepairMessageAppletQuery; |
| | | import com.ruoyi.system.query.TTenantAppletQuery; |
| | | import com.ruoyi.system.service.ISysUserService; |
| | | import com.ruoyi.system.service.StateProcessTemplateService; |
| | | import com.ruoyi.system.service.TBannerService; |
| | | import com.ruoyi.system.service.TBillService; |
| | | import com.ruoyi.system.service.TCheckAcceptRecordService; |
| | | import com.ruoyi.system.service.TContractRentTypeService; |
| | | import com.ruoyi.system.service.TContractService; |
| | | import com.ruoyi.system.service.TFaultRepairMessageService; |
| | | import com.ruoyi.system.service.THouseService; |
| | | import com.ruoyi.system.service.TTenantService; |
| | | import com.ruoyi.system.vo.ExamineVO; |
| | | import com.ruoyi.system.vo.MyHouseVO; |
| | | import com.ruoyi.system.vo.MyToDoVO; |
| | | import com.ruoyi.system.vo.PayListVO; |
| | | import com.ruoyi.system.vo.ProcessTaskListVO; |
| | | import com.ruoyi.system.vo.TBillVO; |
| | | import com.ruoyi.system.vo.TCheckAcceptRecordVO; |
| | | import com.ruoyi.system.vo.TContractVO; |
| | | import com.ruoyi.system.vo.TFaultRepairMessageVO; |
| | | import com.ruoyi.system.vo.TenantVO; |
| | | 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.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | 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; |
| | | |
| | | /** |
| | |
| | | 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"); |
| | | } |
| | | /** |
| | | * 获取轮播图管理列表 |
| | | */ |
| | |
| | | return R.ok(myToDoVO); |
| | | } |
| | | |
| | | |
| | | |
| | | @ApiOperation(value = "租户-当前在租房源") |
| | | @PostMapping(value = "/tenant/myHouse") |
| | | public R<List<MyHouseVO>> myHouse() { |
| | |
| | | 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() + "月" : bill.getPayFeesTime().getMonth() + "月"); |
| | | 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.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() + "月" : bill.getPayFeesTime().getMonth() + "月"); |
| | | 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()); |
| | | myToDoVO.setRentalReturnStatus(tHouse.getRentalReturnStatus() == null ? "1" : tHouse.getRentalReturnStatus()); |
| | | List<TBill> billList = bills.stream().filter(e -> e.getContractId().equals(contract.getId())).collect(Collectors.toList()); |
| | | List<PayListVO> 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() + "元"); |
| | |
| | | @PostMapping(value = "/admin/myToDo") |
| | | public R<MyToDoVO> adminMyToDo() { |
| | | MyToDoVO myToDoVO = new MyToDoVO(); |
| | | LoginUserApplet loginUserApplet = tokenService.getLoginUserApplet(); |
| | | if (loginUserApplet != null) { |
| | | long examineCount = contractService.count(new LambdaQueryWrapper<TContract>() |
| | | .eq(TContract::getStatus, 2)); |
| | | myToDoVO.setExamineCount((int) examineCount); |
| | | LoginUser loginUser = tokenService.getLoginUser(); |
| | | if (loginUser != null) { |
| | | // long examineCount = contractService.count(new LambdaQueryWrapper<TContract>() |
| | | // .eq(TContract::getStatus, 2)); |
| | | ProcessTaskListBO processTaskListBO = new ProcessTaskListBO(); |
| | | PageInfo<ProcessTaskListVO> processTaskListVOPageInfo = processTemplateService.waitTaskPage(processTaskListBO); |
| | | myToDoVO.setExamineCount((int) processTaskListVOPageInfo.getTotal()); |
| | | List<String> 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); |
| | | 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); |
| | |
| | | @ApiOperation(value = "管理员-房屋验收单列表") |
| | | @PostMapping(value = "/admin/houseCheck") |
| | | public R<PageInfo<TCheckAcceptRecordVO>> houseCheck(@RequestBody TCheckAcceptRecordAppletQuery query) { |
| | | LoginUser loginUser = tokenService.getLoginUser(); |
| | | SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId()); |
| | | query.setBusinessDeptId(sysUser.getBusinessDeptId()); |
| | | return R.ok(checkAcceptRecordService.pageListApplet(query)); |
| | | } |
| | | |
| | |
| | | @GetMapping(value = "/getDetailById") |
| | | public R<TCheckAcceptRecordVO> getDetailById(@RequestParam String id) { |
| | | TCheckAcceptRecord checkAcceptRecord = checkAcceptRecordService.getById(id); |
| | | checkAcceptRecord.setCleanSituation(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CHECK_SITUATION, checkAcceptRecord.getCleanSituation())); |
| | | checkAcceptRecord.setOverallSituation(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CHECK_SITUATION, checkAcceptRecord.getOverallSituation())); |
| | | checkAcceptRecord.setDeviceSituation(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CHECK_SITUATION, checkAcceptRecord.getDeviceSituation())); |
| | | checkAcceptRecord.setFurnitureSituation(DictUtils.getDictLabel(DictConstants.DICT_TYPE_CHECK_SITUATION, checkAcceptRecord.getFurnitureSituation())); |
| | | // 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); |
| | | // 查询合同信息 |
| | |
| | | } |
| | | |
| | | @ApiOperation(value = "管理员-新增验收") |
| | | @GetMapping(value = "/addRecord") |
| | | public R<TCheckAcceptRecordVO> getDetailById(@Validated @RequestBody TCheckAcceptRecord dto) { |
| | | |
| | | @PostMapping(value = "/addRecord") |
| | | public R<TCheckAcceptRecordVO> 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<TCheckAcceptRecord>() |
| | | .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); |
| | | TCheckAcceptRecord checkAcceptRecord = checkAcceptRecordService.getById(dto.getId()); |
| | | TContract contract = contractService.getById(checkAcceptRecord.getContractId()); |
| | | // 添加账单 |
| | | TBill tBill = new TBill(); |
| | | tBill.setContractId(checkAcceptRecord.getContractId()); |
| | | tBill.setContractNumber(contract.getContractNumber()); |
| | | tBill.setPayableFeesMoney(dto.getCheckMoney()); |
| | | tBill.setPayableFeesTime(LocalDate.now()); |
| | | tBill.setPayFeesStatus("1"); |
| | | tBill.setBillType("4"); |
| | | tBill.setOverDays(0); |
| | | tBill.setBusinessDeptId(contract.getBusinessDeptId()); |
| | | tBill.setOutstandingMoney(dto.getCheckMoney()); |
| | | billService.save(tBill); |
| | | return R.ok(); |
| | | } |
| | | /** |
| | | * 获取报修管理列表 |
| | | */ |
| | | @ApiOperation(value = "管理员-房屋维修分页列表") |
| | | @PostMapping(value = "/housePageList") |
| | | public R<PageInfo<TFaultRepairMessageVO>> pageList(@RequestBody TFaultRepairMessageAppletQuery query) { |
| | | return R.ok(tFaultRepairMessageService.pageListApplet(query)); |
| | | } |
| | | /** |
| | | * 查看报修详情 |
| | | */ |
| | | @ApiOperation(value = "管理员-房屋维修查看详情") |
| | | @GetMapping(value = "/getDetailByIdRepair") |
| | | public R<TFaultRepairMessageVO> 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<Boolean> handle(@Validated @RequestBody TFaultRepairMessage faultRepairMessage) { |
| | | faultRepairMessage.setStatus(2); |
| | | return R.ok(tFaultRepairMessageService.updateById(faultRepairMessage)); |
| | | } |
| | | |
| | | /** |
| | | * 获取租户管理列表 |
| | | */ |
| | | @ApiOperation(value = "获取租户分页列表") |
| | | @PostMapping(value = "/pageList") |
| | | public R<PageInfo<TenantVO>> pageList(@RequestBody TTenantAppletQuery query) { |
| | | return R.ok(tenantService.pageListApplet(query)); |
| | | } |
| | | /** |
| | | * 获取租户管理列表 |
| | | */ |
| | | @ApiOperation(value = "获取租户详情") |
| | | @GetMapping(value = "/getTenantDetailById") |
| | | public R<TTenant> getTenantDetailById(@RequestParam String id) { |
| | | return R.ok(tenantService.getById(id)); |
| | | } |
| | | /** |
| | | * 租户详情-租房信息 |
| | | */ |
| | | @ApiOperation(value = "租户详情-租房信息列表") |
| | | @GetMapping(value = "/listHouse") |
| | | public R<List<THouse>> listHouse(@RequestParam String id) { |
| | | List<THouse> res = tenantService.listHouse(id); |
| | | return R.ok(res); |
| | | } |
| | | /** |
| | | * 租户详情-租房信息 |
| | | */ |
| | | @ApiOperation(value = "租户详情-合同列表") |
| | | @GetMapping(value = "/listContract") |
| | | public R<List<TContract>> listContract(@RequestParam String id) { |
| | | List<TContract> res = tenantService.listContract(id); |
| | | return R.ok(res); |
| | | } |
| | | @ApiOperation(value = "租户详情-缴费账单列表") |
| | | @PostMapping("/listBill") |
| | | public R<PageInfo<TBillVO>> listBill(@RequestBody TBillAppletQuery query){ |
| | | PageInfo<TBillVO> pageInfo = tenantService.listBill(query); |
| | | return R.ok(pageInfo); |
| | | } |
| | | @ApiOperation(value = "租户详情-缴费账单-账单详情") |
| | | @PostMapping("/billDetail") |
| | | public R<TBillVO> 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<PageInfo<ExamineVO>> 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<ExamineVO> pageInfo = tenantService.examineList(dto); |
| | | return R.ok(pageInfo); |
| | | } |
| | | @ApiOperation(value = "管理员-审批详情") |
| | | @GetMapping("/examineDetail") |
| | | public R<TContractVO> 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<TContract>() |
| | | .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<TBill> 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(); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |