| | |
| | | import com.ruoyi.system.vo.CheckAcceptRecordVO; |
| | | import com.ruoyi.system.vo.TContractVO; |
| | | import com.ruoyi.web.controller.tool.NumberToChineseUtils; |
| | | import com.ruoyi.web.controller.tool.TencentCosUtil; |
| | | import com.ruoyi.web.controller.tool.WordUtil; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.ServletOutputStream; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | |
| | | } |
| | | @Autowired |
| | | private WordUtil wordUtil; |
| | | @Autowired |
| | | private TencentCosUtil tencentCosUtil; |
| | | @ApiOperation(value = "生成合同附件") |
| | | @PostMapping("/set") |
| | | @Log(title = "生成合同附件", businessType = BusinessType.EXPORT) |
| | |
| | | List<TContract> list = contractService.lambdaQuery().in(TContract::getId, dto.getIds()).list(); |
| | | List<String> res = new ArrayList<>(); |
| | | for (TContract contract : list) { |
| | | String url = generateContract(contract); |
| | | String url = generateContract(contract,new TContractDTO()); |
| | | res.add(url); |
| | | } |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | private String generateContract(TContract contract) { |
| | | private String generateContract(TContract contract,TContractDTO dto) { |
| | | String templateFileName = "1_yzj_租赁合同_个人.docx"; |
| | | String contractId = contract.getId(); |
| | | TBill firstBill = null; |
| | |
| | | fill(templateParam, "email", tenant.getEmail()); |
| | | |
| | | // 企业、政府机构、国有企业 |
| | | if (Objects.nonNull(tenant.getTenantType()) |
| | | && (tenant.getTenantType().equals("2") |
| | | || tenant.getTenantType().equals("5") |
| | | || tenant.getTenantType().equals("7"))) { |
| | | if (Objects.nonNull(tenant.getTenantAttributes()) |
| | | && (tenant.getTenantAttributes().equals("2") |
| | | || tenant.getTenantAttributes().equals("5") |
| | | || tenant.getTenantAttributes().equals("7"))) { |
| | | fill(templateParam, "creditCode", tenant.getCreditCode()); |
| | | fill(templateParam, "legalPerson", tenant.getLegalPerson()); |
| | | templateFileName = "1_yzj_租赁合同_企业.docx"; |
| | |
| | | |
| | | // 日期相关参数处理 |
| | | fill(templateParam, "remark", contract.getRemark()); |
| | | fill(templateParam, "houseUseScope", contract.getHouseUseScope()); |
| | | fill(templateParam, "houseUseScope", StringUtils.isNotEmpty(contract.getHouseUseScope()) ? contract.getHouseUseScope() : "————"); |
| | | fill(templateParam, "days", ChronoUnit.DAYS.between( |
| | | contract.getStartTime(), contract.getEndTime())); |
| | | |
| | |
| | | : contract.getPayType().equals("2") ? "季" |
| | | : "年"; |
| | | fill(templateParam, "payType", payType); |
| | | BigDecimal extracted = extracted(contract); |
| | | // 首期租金处理 |
| | | 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", "¥" + extracted + "元"); |
| | | // 其他财务字段 |
| | | fill(templateParam, "firstRentString", "人民币" + NumberToChineseUtils.numberToChinese(extracted.doubleValue())); |
| | | } else { |
| | | // fill(templateParam, "firstRent", ""); |
| | | } |
| | | |
| | | fill(templateParam, "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()+"元"); |
| | | BigDecimal extracted = extracted(contract,dto); |
| | | System.out.println("金额========================="+extracted); |
| | | fill(templateParam, "firstRent", "¥" + extracted + "元"); |
| | | // 其他财务字段 |
| | | fill(templateParam, "firstRentString", "人民币" + NumberToChineseUtils.numberToChinese(extracted.doubleValue())); |
| | | |
| | | |
| | | 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, "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, "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, "checkTime", ""); |
| | | } |
| | | |
| | | String url = ""; |
| | | if (StringUtils.isNotEmpty(contract.getSignature())){ |
| | | url = tencentCosUtil.downLoadFileImg(contract.getSignature()); |
| | | } |
| | | |
| | | |
| | | return wordUtil.generatePdf( |
| | | "/usr/local/project/file/", |
| | | templateFileName, |
| | | templateParam, |
| | | "租赁合同", |
| | | "/usr/local/project/file/"); |
| | | "/usr/local/project/file/",url); |
| | | } |
| | | |
| | | private BigDecimal extracted(TContract contract) { |
| | | List<TContractRentType> contractRentTypes = contractRentTypeService.list(); |
| | | TContractRentType tContractRentType = contractRentTypes.stream().filter(e -> e.getContractId().equals(contract.getId())).findFirst().orElse(null); |
| | | private BigDecimal extracted(TContract contract,TContractDTO dto) { |
| | | TContractRentType tContractRentType = null; |
| | | if (contract.getIsIncreasing()){ |
| | | tContractRentType = contractRentTypeService.lambdaQuery().eq(TContractRentType::getContractId, contract.getId()) |
| | | .last("limit 1").one(); |
| | | if (tContractRentType==null){ |
| | | tContractRentType = new TContractRentType(); |
| | | tContractRentType.setContractId(contract.getId()); |
| | | tContractRentType.setIncreasingDecreasing(dto.getIncreasingDecreasing()); |
| | | tContractRentType.setIncreasingDecreasingType(dto.getIncreasingDecreasingType()); |
| | | tContractRentType.setNumericalValue(dto.getNumericalValue()); |
| | | tContractRentType.setChangeTime(dto.getChangeTime()); |
| | | tContractRentType.setCycleTime(dto.getCycleTime()); |
| | | } |
| | | } |
| | | // 生成第一笔账单 |
| | | // 第一次应缴费日期 |
| | | |
| | |
| | | @PostMapping("/generateContractPreview") |
| | | public R<String> generateContractPreview(@RequestBody TContractDTO dto) |
| | | { |
| | | String contractName = dto.getContractName(); |
| | | if (StringUtils.isEmpty(contractName)){ |
| | | return R.fail("合同名称不能为空"); |
| | | } |
| | | LocalDateTime startTime = dto.getStartTime(); |
| | | if (startTime == null){ |
| | | return R.fail("合同生效日期不能为空"); |
| | | } |
| | | LocalDateTime endTime = dto.getEndTime(); |
| | | if (endTime == null){ |
| | | return R.fail("合同生效日期不能为空"); |
| | | } |
| | | |
| | | BigDecimal monthRent = dto.getMonthRent(); |
| | | if (monthRent == null){ |
| | | return R.fail("月租金不能为空"); |
| | | } |
| | | |
| | | BigDecimal deposit = dto.getDeposit(); |
| | | if (deposit == null){ |
| | | return R.fail("押金不能为空"); |
| | | } |
| | | |
| | | String payType = dto.getPayType(); |
| | | if (StringUtils.isEmpty(payType)){ |
| | | return R.fail("租金支付方式不能为空"); |
| | | } |
| | | |
| | | LocalDateTime startPayTime = dto.getStartPayTime(); |
| | | if (startPayTime == null){ |
| | | return R.fail("开始计费日期不能为空"); |
| | | } |
| | | |
| | | String partyOneName = dto.getPartyOneName(); |
| | | if (StringUtils.isEmpty(partyOneName)){ |
| | | return R.fail("甲方名称不能为空"); |
| | | } |
| | | |
| | | String partyOnePerson = dto.getPartyOnePerson(); |
| | | if (StringUtils.isEmpty(partyOnePerson)){ |
| | | return R.fail("甲方联系人不能为空"); |
| | | } |
| | | |
| | | String partyOnePhone = dto.getPartyOnePhone(); |
| | | if (StringUtils.isEmpty(partyOnePhone)){ |
| | | return R.fail("甲方联系电话不能为空"); |
| | | } |
| | | |
| | | String partyTwoName = dto.getPartyTwoName(); |
| | | if (StringUtils.isEmpty(partyTwoName)){ |
| | | return R.fail("乙方名称不能为空"); |
| | | } |
| | | String partyTwoPerson = dto.getPartyTwoPerson(); |
| | | if (StringUtils.isEmpty(partyTwoPerson)){ |
| | | return R.fail("乙方联系人不能为空"); |
| | | } |
| | | String partyTwoPhone = dto.getPartyTwoPhone(); |
| | | if (StringUtils.isEmpty(partyTwoPhone)){ |
| | | return R.fail("乙方联系电话不能为空"); |
| | | } |
| | | |
| | | TContract contract = new TContract(); |
| | | BeanUtil.copyProperties(dto,contract); |
| | | return R.ok(generateContract(contract)); |
| | | return R.ok(generateContract(contract,dto)); |
| | | } |
| | | |
| | | /** |