| | |
| | | import com.ruoyi.common.constant.DictConstants; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.enums.BusinessType; |
| | | import com.ruoyi.common.enums.DisabledEnum; |
| | | import com.ruoyi.common.enums.ProcessCategoryEnum; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | |
| | | import com.ruoyi.system.dto.TContractDTO; |
| | | import com.ruoyi.system.dto.TerminateContractDTO; |
| | | import com.ruoyi.system.export.ContractExport; |
| | | import com.ruoyi.system.model.*; |
| | | 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.THouse; |
| | | import com.ruoyi.system.model.TTenant; |
| | | import com.ruoyi.system.query.TContractBillQuery; |
| | | import com.ruoyi.system.query.TContractQuery; |
| | | import com.ruoyi.system.service.*; |
| | | import com.ruoyi.system.service.StateProcessTemplateService; |
| | | 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.THouseService; |
| | | import com.ruoyi.system.service.TTenantService; |
| | | import com.ruoyi.system.task.base.QuartzManager; |
| | | import com.ruoyi.system.task.base.TimeJobType; |
| | | import com.ruoyi.system.task.jobs.StateProcessJob; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.bind.annotation.DeleteMapping; |
| | | 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 javax.servlet.ServletOutputStream; |
| | | import javax.servlet.http.HttpServletResponse; |
| | |
| | | import java.net.URLEncoder; |
| | | import java.time.LocalDateTime; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.*; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Log(title = "合同管理-确认结算", businessType = BusinessType.UPDATE) |
| | | @ApiOperation(value = "确认结算") |
| | | @PostMapping(value = "/confirmSettlement") |
| | | |
| | | public R<Boolean> confirmSettlement(String id) { |
| | | TContract contract = contractService.getById(id); |
| | | contract.setStatus("8"); |
| | |
| | | for (TBill tBill : tBills) { |
| | | tBill.setPayFeesStatus("5"); |
| | | } |
| | | billService.updateBatchById(tBills); return R.ok(); |
| | | billService.updateBatchById(tBills); |
| | | // 将房屋改成待出租 |
| | | THouse house = houseService.getById(contract.getHouseId()); |
| | | house.setLeaseStatus("1"); |
| | | houseService.updateById(house); |
| | | return R.ok(); |
| | | } |
| | | @ApiOperation(value = "终止合同剩余未缴费账单列表") |
| | | @PostMapping(value = "/contractBillList") |
| | |
| | | return R.ok(res); |
| | | } |
| | | |
| | | // 计算两个日期相差天数的方法实现: |
| | | public static long calculateDaysBetween(LocalDateTime start, LocalDateTime end) { |
| | | return ChronoUnit.DAYS.between(start, end); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | LocalDateTime start = LocalDateTime.of(2024, 1, 1, 0, 0); |
| | | LocalDateTime end = LocalDateTime.of(2024, 1, 5, 12, 0); |
| | | long days = calculateDaysBetween(start, end); // 返回4天(不满一天不计) |
| | | |
| | | } |
| | | |
| | | private String generateContract(TContract contract) { |
| | | String templateFileName = "1_yzj_租赁合同_个人.docx"; |
| | | String contractId = contract.getId(); |
| | |
| | | if (StringUtils.isNotEmpty(contractId)) { |
| | | firstBill = billService.lambdaQuery() |
| | | .eq(TBill::getContractId, contractId) |
| | | .orderByDesc(TBill::getStartTime) |
| | | .orderByAsc(TBill::getStartTime) |
| | | .ne(TBill::getManualAddition, DisabledEnum.YES.getCode()) |
| | | .last("limit 1") |
| | | .one(); |
| | | tCheckAcceptRecord = checkAcceptRecordService.lambdaQuery() |
| | |
| | | Map<String, Object> templateParam = new HashMap<>(5); |
| | | fill(templateParam, "contractNumber", contract.getContractNumber()); |
| | | fill(templateParam, "partyOneName", contract.getPartyOneName()); |
| | | fill(templateParam, "partyTwoName", contract.getPartyTwoName()); |
| | | |
| | | |
| | | if (Objects.nonNull(tenant)) { |
| | | fill(templateParam, "mailAddress", tenant.getMailAddress()); |
| | |
| | | fill(templateParam, "residentName", tenant.getResidentName()); |
| | | fill(templateParam, "bankNumber", tenant.getBankNumber()); |
| | | fill(templateParam, "bankName", tenant.getBankName()); |
| | | fill(templateParam, "partyTwoName", tenant.getLessee()); |
| | | fill(templateParam, "email", tenant.getEmail()); |
| | | |
| | | // 企业、政府机构、国有企业 |
| | | if (Objects.nonNull(tenant.getTenantType()) |
| | |
| | | |
| | | // 首期租金处理 |
| | | if (firstBill != null) { |
| | | double firstRent = (contract.getPayType().equals("1") |
| | | ? contract.getMonthRent() |
| | | : contract.getPayType().equals("2") |
| | | ? contract.getMonthRent().multiply(new BigDecimal("3")) |
| | | : contract.getMonthRent().multiply(new BigDecimal("12"))) |
| | | .setScale(2, RoundingMode.DOWN).doubleValue(); |
| | | fill(templateParam, "firstRent", "¥" + firstBill.getPayableFeesMoney() + "元"); |
| | | // 其他财务字段 |
| | | fill(templateParam, "firstRentString", "人民币" + NumberToChineseUtils.numberToChinese(firstBill.getPayableFeesMoney().doubleValue())); |
| | | } else { |
| | | fill(templateParam, "firstRent", ""); |
| | | } |
| | | |
| | | // 其他财务字段 |
| | | fill(templateParam, "firstRentString", "人民币" + NumberToChineseUtils.numberToChinese( |
| | | (contract.getPayType().equals("1") |
| | | ? contract.getMonthRent() |
| | | : contract.getPayType().equals("2") |
| | | ? contract.getMonthRent().multiply(new BigDecimal("3")) |
| | | : contract.getMonthRent().multiply(new BigDecimal("12"))) |
| | | .setScale(2, RoundingMode.DOWN).doubleValue())); |
| | | |
| | | fill(templateParam, "firstRentString", |
| | | "人民币"+NumberToChineseUtils.numberToChinese( |
| | |
| | | if (StringUtils.isEmpty(key)){ |
| | | throw new RuntimeException("key不能为空"); |
| | | } |
| | | templateParam.put(StringUtils.format("${{}}", "contractNumber"), value != null ? value : ""); |
| | | templateParam.put("${"+key+"}", value != null ? value : ""); |
| | | } |
| | | |
| | | /** |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | @ApiOperation("上传合同附件") |
| | | @PostMapping(value = "/upload-file") |
| | | public R<Boolean> uploadFile(@RequestBody TContractDTO dto ) { |
| | | if (Objects.isNull(dto.getId())) { |
| | | throw new ServiceException("合同id不能为空"); |
| | | } |
| | | TContract contract = contractService.getById(dto.getId()); |
| | | if (Objects.isNull(contract)) { |
| | | throw new ServiceException("合同不存在"); |
| | | } |
| | | /* if (StringUtils.isNotBlank(contract.getContractFile())) { |
| | | List<String> contractFileList = Arrays.stream(contract.getContractFile().split(",")).collect(Collectors.toList()); |
| | | List<String> memoryList = Arrays.stream(contract.getMemory().split(",")).collect(Collectors.toList()); |
| | | List<String> contractNameList = Arrays.stream(contract.getContractFileName().split(",")).collect(Collectors.toList()); |
| | | contractFileList.addAll(Arrays.asList(dto.getContractFile().split(","))); |
| | | contractNameList.addAll(Arrays.asList(dto.getContractFileName().split(","))); |
| | | memoryList.addAll(Arrays.asList(dto.getMemory().split(","))); |
| | | contract.setContractFile(String.join(",", contractFileList)); |
| | | contract.setContractFileName(String.join(",", contractNameList)); |
| | | contract.setMemory(String.join(",", memoryList)); |
| | | } else { |
| | | contract.setContractFile(dto.getContractFile()); |
| | | contract.setContractFileName(dto.getContractFileName()); |
| | | contract.setMemory(dto.getMemory()); |
| | | }*/ |
| | | contract.setContractFile(dto.getContractFile()); |
| | | contract.setContractFileName(dto.getContractFileName()); |
| | | contract.setMemory(dto.getMemory()); |
| | | return R.ok(contractService.updateById(contract)); |
| | | } |
| | | |
| | | } |
| | | |