| @@ -641,7 +641,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| logger.info("获取租赁及物业合同数据"); | |||
| result = getRentAndPropertyInfo(id); | |||
| result.put("contractType",EnumContractType.ALL.getMessage()); | |||
| templatePath = "contract-word-template/contract_rent_property.docx"; | |||
| if(EnumRentContractType.RENT_BY_AREA.getCode().equals(result.get("type"))){ | |||
| templatePath = "contract-word-template/contract_rent_property.docx"; | |||
| }else{ | |||
| templatePath = "contract-word-template/contract_rent_property_by_ratio.docx"; | |||
| } | |||
| logger.info("租赁及物业合同数据结果:" + result); | |||
| } | |||
| @@ -729,87 +733,18 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| result.put("cashDepositMonthRent", cashDepositMonthRent); | |||
| result.put("cashDepositRent", cashDepositRent); | |||
| result.put("cashDepositRentUpper", digitUppercase(cashDepositRent)); | |||
| result.put("type",wxRentContract.getType()); | |||
| int extralease = lease % 12; | |||
| int extracount = extralease > 0 ? 1 : 0; | |||
| int paycount = lease / 12 + extracount; | |||
| int index = 10-paycount; | |||
| int count=paycount-1; | |||
| BigDecimal rentPrice = new BigDecimal(priceRent); | |||
| //常规租期 | |||
| for (int i = 0; i < count; i++) { | |||
| //开始时间 | |||
| Calendar instance = Calendar.getInstance(); | |||
| instance.setTime(wxRentContract.getRentalStartDate()); | |||
| instance.add(Calendar.MONTH, lease*i); | |||
| Date starttime = instance.getTime(); | |||
| String startdate = DateUtils.date2String(starttime, "yyyy-MM-dd"); | |||
| result.put("rentalStartDate"+i,startdate); | |||
| result.put("rentalStartDateYear"+i, startdate.substring(0, 4)); | |||
| result.put("rentalStartDateMonth"+i, startdate.substring(5, 7)); | |||
| result.put("rentalStartDateDay"+i, startdate.substring(8)); | |||
| //结束时间 | |||
| instance.clear(); | |||
| instance.setTime(starttime); | |||
| instance.add(Calendar.MONTH, lease); | |||
| instance.add(Calendar.DAY_OF_MONTH, -1); | |||
| Date endtime = instance.getTime(); | |||
| String enddate = DateUtils.date2String(endtime, "yyyy-MM-dd"); | |||
| result.put("rentalEndDate"+i,enddate); | |||
| result.put("rentalEndDateYear"+i, enddate.substring(0, 4)); | |||
| result.put("rentalEndDateMonth"+i, enddate.substring(5, 7)); | |||
| result.put("rentalEndDateDay"+i, enddate.substring(8)); | |||
| if(i>0){ | |||
| rentPrice = rentPrice.multiply(new BigDecimal(adjustRatio)) | |||
| .add(rentPrice).setScale(2, RoundingMode.HALF_EVEN); | |||
| result.put("priceRentUpper"+i,digitUppercase(rentPrice.doubleValue())); | |||
| result.put("priceRent"+i,digitUppercase(rentPrice.doubleValue())); | |||
| } | |||
| } | |||
| if(extracount>0){ | |||
| //额外租期 | |||
| //开始时间 | |||
| Calendar instance = Calendar.getInstance(); | |||
| instance.setTime(wxRentContract.getRentalStartDate()); | |||
| instance.add(Calendar.MONTH, lease*count); | |||
| Date starttime = instance.getTime(); | |||
| String startdate = DateUtils.date2String(starttime, "yyyy-MM-dd"); | |||
| result.put("rentalStartDate"+count,startdate); | |||
| result.put("rentalStartDateYear"+count, startdate.substring(0, 4)); | |||
| result.put("rentalStartDateMonth"+count, startdate.substring(5, 7)); | |||
| result.put("rentalStartDateDay"+count, startdate.substring(8)); | |||
| //结束时间 | |||
| instance.clear(); | |||
| instance.setTime(starttime); | |||
| instance.add(Calendar.MONTH, extralease); | |||
| instance.add(Calendar.DAY_OF_MONTH, -1); | |||
| Date endtime = instance.getTime(); | |||
| String enddate = DateUtils.date2String(endtime, "yyyy-MM-dd"); | |||
| result.put("rentalEndDate"+count,enddate); | |||
| result.put("rentalEndDateYear"+count, enddate.substring(0, 4)); | |||
| result.put("rentalEndDateMonth"+count, enddate.substring(5, 7)); | |||
| result.put("rentalEndDateDay"+count, enddate.substring(8)); | |||
| rentPrice = rentPrice.multiply(new BigDecimal(adjustRatio)) | |||
| .add(rentPrice).setScale(2, RoundingMode.HALF_EVEN); | |||
| result.put("priceRentUpper"+count,digitUppercase(rentPrice.doubleValue())); | |||
| result.put("priceRent"+count,digitUppercase(rentPrice.doubleValue())); | |||
| } | |||
| //无数据租期 | |||
| for(int i=paycount;i<index;i++){ | |||
| result.put("rentalStartDate"+i,"/"); | |||
| result.put("rentalStartDateYear"+i, "/"); | |||
| result.put("rentalStartDateMonth"+i, "/"); | |||
| result.put("rentalStartDateDay"+i, "/"); | |||
| result.put("rentalEndDate"+i,"/"); | |||
| result.put("rentalEndDateYear"+i, "/"); | |||
| result.put("rentalEndDateMonth"+i, "/"); | |||
| result.put("rentalEndDateDay"+i, "/"); | |||
| result.put("priceRentUpper"+i,"/"); | |||
| result.put("priceRent"+i,"/"); | |||
| if(wxRentContract.getType().equals(EnumRentContractType.RENT_BY_AREA.getCode())){ | |||
| areaWay(wxRentContract, result, lease, adjustRatio, extralease, extracount, paycount, index, count, rentPrice); | |||
| }else{ | |||
| ratioWay(wxRentContract, result, lease, adjustRatio, extralease, extracount, paycount, index, count, rentPrice); | |||
| } | |||
| //物业合同信息 | |||
| WxPropertyContract propertyContract = new WxPropertyContract(); | |||
| propertyContract.setTenantId(wxRentContract.getTenantId()); | |||
| @@ -900,6 +835,156 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| return result; | |||
| } | |||
| public void ratioWay(WxRentContract wxRentContract, Map<String,Object> result, Integer lease, double adjustRatio, int extralease, int extracount, int paycount, int index, int count, BigDecimal rentPrice) { | |||
| double payRatio = wxRentContract.getPayRatio()!=null?wxRentContract.getPayRatio() / 100.0:0; | |||
| //常规租期 | |||
| for (int i = 0; i < count; i++) { | |||
| //开始时间 | |||
| Calendar instance = Calendar.getInstance(); | |||
| instance.setTime(wxRentContract.getRentalStartDate()); | |||
| instance.add(Calendar.MONTH, lease*i); | |||
| Date starttime = instance.getTime(); | |||
| String startdate = DateUtils.date2String(starttime, "yyyy-MM-dd"); | |||
| result.put("rentalStartDate"+i,startdate); | |||
| result.put("rentalStartDateYear"+i, startdate.substring(0, 4)); | |||
| result.put("rentalStartDateMonth"+i, startdate.substring(5, 7)); | |||
| result.put("rentalStartDateDay"+i, startdate.substring(8)); | |||
| //结束时间 | |||
| instance.clear(); | |||
| instance.setTime(starttime); | |||
| instance.add(Calendar.MONTH, lease); | |||
| instance.add(Calendar.DAY_OF_MONTH, -1); | |||
| Date endtime = instance.getTime(); | |||
| String enddate = DateUtils.date2String(endtime, "yyyy-MM-dd"); | |||
| result.put("rentalEndDate"+i,enddate); | |||
| result.put("rentalEndDateYear"+i, enddate.substring(0, 4)); | |||
| result.put("rentalEndDateMonth"+i, enddate.substring(5, 7)); | |||
| result.put("rentalEndDateDay"+i, enddate.substring(8)); | |||
| result.put("adjustRatio"+i,adjustRatio); | |||
| result.put("adjustPeriod"+i,wxRentContract.getAdjustPeriod()); | |||
| result.put("payRatio"+i,payRatio); | |||
| } | |||
| if(extracount>0){ | |||
| //额外租期 | |||
| //开始时间 | |||
| Calendar instance = Calendar.getInstance(); | |||
| instance.setTime(wxRentContract.getRentalStartDate()); | |||
| instance.add(Calendar.MONTH, lease*count); | |||
| Date starttime = instance.getTime(); | |||
| String startdate = DateUtils.date2String(starttime, "yyyy-MM-dd"); | |||
| result.put("rentalStartDate"+count,startdate); | |||
| result.put("rentalStartDateYear"+count, startdate.substring(0, 4)); | |||
| result.put("rentalStartDateMonth"+count, startdate.substring(5, 7)); | |||
| result.put("rentalStartDateDay"+count, startdate.substring(8)); | |||
| //结束时间 | |||
| instance.clear(); | |||
| instance.setTime(starttime); | |||
| instance.add(Calendar.MONTH, extralease); | |||
| instance.add(Calendar.DAY_OF_MONTH, -1); | |||
| Date endtime = instance.getTime(); | |||
| String enddate = DateUtils.date2String(endtime, "yyyy-MM-dd"); | |||
| result.put("rentalEndDate"+count,enddate); | |||
| result.put("rentalEndDateYear"+count, enddate.substring(0, 4)); | |||
| result.put("rentalEndDateMonth"+count, enddate.substring(5, 7)); | |||
| result.put("rentalEndDateDay"+count, enddate.substring(8)); | |||
| result.put("adjustRatio"+count,adjustRatio); | |||
| result.put("adjustPeriod"+count,wxRentContract.getAdjustPeriod()); | |||
| result.put("payRatio"+count,payRatio); | |||
| } | |||
| //无数据租期 | |||
| for(int i=paycount;i<index;i++){ | |||
| result.put("rentalStartDate"+i,"/"); | |||
| result.put("rentalStartDateYear"+i, "/"); | |||
| result.put("rentalStartDateMonth"+i, "/"); | |||
| result.put("rentalStartDateDay"+i, "/"); | |||
| result.put("rentalEndDate"+i,"/"); | |||
| result.put("rentalEndDateYear"+i, "/"); | |||
| result.put("rentalEndDateMonth"+i, "/"); | |||
| result.put("rentalEndDateDay"+i, "/"); | |||
| result.put("adjustRatio"+i,"/"); | |||
| result.put("adjustPeriod"+i,"/"); | |||
| result.put("payRatio"+i,"/"); | |||
| } | |||
| } | |||
| public void areaWay(WxRentContract wxRentContract, Map<String, Object> result, Integer lease, double adjustRatio, int extralease, int extracount, int paycount, int index, int count, BigDecimal rentPrice) { | |||
| //常规租期 | |||
| for (int i = 0; i < count; i++) { | |||
| //开始时间 | |||
| Calendar instance = Calendar.getInstance(); | |||
| instance.setTime(wxRentContract.getRentalStartDate()); | |||
| instance.add(Calendar.MONTH, lease*i); | |||
| Date starttime = instance.getTime(); | |||
| String startdate = DateUtils.date2String(starttime, "yyyy-MM-dd"); | |||
| result.put("rentalStartDate"+i,startdate); | |||
| result.put("rentalStartDateYear"+i, startdate.substring(0, 4)); | |||
| result.put("rentalStartDateMonth"+i, startdate.substring(5, 7)); | |||
| result.put("rentalStartDateDay"+i, startdate.substring(8)); | |||
| //结束时间 | |||
| instance.clear(); | |||
| instance.setTime(starttime); | |||
| instance.add(Calendar.MONTH, lease); | |||
| instance.add(Calendar.DAY_OF_MONTH, -1); | |||
| Date endtime = instance.getTime(); | |||
| String enddate = DateUtils.date2String(endtime, "yyyy-MM-dd"); | |||
| result.put("rentalEndDate"+i,enddate); | |||
| result.put("rentalEndDateYear"+i, enddate.substring(0, 4)); | |||
| result.put("rentalEndDateMonth"+i, enddate.substring(5, 7)); | |||
| result.put("rentalEndDateDay"+i, enddate.substring(8)); | |||
| if(i>0){ | |||
| rentPrice = rentPrice.multiply(new BigDecimal(adjustRatio)) | |||
| .add(rentPrice).setScale(2, RoundingMode.HALF_EVEN); | |||
| result.put("priceRentUpper"+i,digitUppercase(rentPrice.doubleValue())); | |||
| result.put("priceRent"+i,digitUppercase(rentPrice.doubleValue())); | |||
| } | |||
| } | |||
| if(extracount>0){ | |||
| //额外租期 | |||
| //开始时间 | |||
| Calendar instance = Calendar.getInstance(); | |||
| instance.setTime(wxRentContract.getRentalStartDate()); | |||
| instance.add(Calendar.MONTH, lease*count); | |||
| Date starttime = instance.getTime(); | |||
| String startdate = DateUtils.date2String(starttime, "yyyy-MM-dd"); | |||
| result.put("rentalStartDate"+count,startdate); | |||
| result.put("rentalStartDateYear"+count, startdate.substring(0, 4)); | |||
| result.put("rentalStartDateMonth"+count, startdate.substring(5, 7)); | |||
| result.put("rentalStartDateDay"+count, startdate.substring(8)); | |||
| //结束时间 | |||
| instance.clear(); | |||
| instance.setTime(starttime); | |||
| instance.add(Calendar.MONTH, extralease); | |||
| instance.add(Calendar.DAY_OF_MONTH, -1); | |||
| Date endtime = instance.getTime(); | |||
| String enddate = DateUtils.date2String(endtime, "yyyy-MM-dd"); | |||
| result.put("rentalEndDate"+count,enddate); | |||
| result.put("rentalEndDateYear"+count, enddate.substring(0, 4)); | |||
| result.put("rentalEndDateMonth"+count, enddate.substring(5, 7)); | |||
| result.put("rentalEndDateDay"+count, enddate.substring(8)); | |||
| rentPrice = rentPrice.multiply(new BigDecimal(adjustRatio)) | |||
| .add(rentPrice).setScale(2, RoundingMode.HALF_EVEN); | |||
| result.put("priceRentUpper"+count,digitUppercase(rentPrice.doubleValue())); | |||
| result.put("priceRent"+count,digitUppercase(rentPrice.doubleValue())); | |||
| } | |||
| //无数据租期 | |||
| for(int i=paycount;i<index;i++){ | |||
| result.put("rentalStartDate"+i,"/"); | |||
| result.put("rentalStartDateYear"+i, "/"); | |||
| result.put("rentalStartDateMonth"+i, "/"); | |||
| result.put("rentalStartDateDay"+i, "/"); | |||
| result.put("rentalEndDate"+i,"/"); | |||
| result.put("rentalEndDateYear"+i, "/"); | |||
| result.put("rentalEndDateMonth"+i, "/"); | |||
| result.put("rentalEndDateDay"+i, "/"); | |||
| result.put("priceRentUpper"+i,"/"); | |||
| result.put("priceRent"+i,"/"); | |||
| } | |||
| } | |||
| /** | |||
| * 导出word | |||
| * <p>第一步生成替换后的word文件,只支持docx</p> | |||