From 92770deb5fc3b747b201cae44d0284aeafc3b37b Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 6 Dec 2018 18:34:06 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86][?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0][=E5=90=88=E5=90=8C=E5=AF=BC=E5=87=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxRentContractController.java | 5 + .../com/iformall/enums/EnumContractType.java | 39 ++ .../com/iformall/enums/EnumPapersType.java | 41 ++ .../com/iformall/enums/EnumTaxpayerType.java | 38 ++ .../service/WxRentContractService.java | 2 + .../impl/WxRentContractServiceImpl.java | 415 ++++++++++++++++-- .../contract_rent_property.docx | Bin 0 -> 67858 bytes .../mapper/WxPropertyContractMapper.xml | 2 +- 8 files changed, 516 insertions(+), 26 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumContractType.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumPapersType.java create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumTaxpayerType.java create mode 100644 mallinkService/src/main/resources/contract-word-template/contract_rent_property.docx diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxRentContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxRentContractController.java index 354f80c47..664f5bfa3 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxRentContractController.java @@ -104,5 +104,10 @@ public class WxRentContractController extends BaseController { return new ResultData(wxRentContractService.getRentContractList(getTenantId(),pageNum, pageSize)); } + @GetMapping("exportContract") + public void exportContract(HttpServletRequest request, HttpServletResponse response){ + wxRentContractService.exportContract(request,response,getTenantId()); + } + } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumContractType.java b/mallinkService/src/main/java/com/iformall/enums/EnumContractType.java new file mode 100644 index 000000000..6de6d0733 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumContractType.java @@ -0,0 +1,39 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ + +public enum EnumContractType { + + RENT(1, "租赁合同"), + PROPERTY(2, "物业合同"), + ALL(0,"租赁及物业合同") + ; + + public static EnumContractType getEnum(Integer code) { + for (EnumContractType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumContractType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumPapersType.java b/mallinkService/src/main/java/com/iformall/enums/EnumPapersType.java new file mode 100644 index 000000000..edec02bc6 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumPapersType.java @@ -0,0 +1,41 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ + +public enum EnumPapersType { + + ID(1, "身份证"), + MILITARY(2, "军官证"), + STUDENt(3, "学生证"), + DRIVE(4, "驾驶证"), + PASSPORT(5,"护照") + ; + + public static EnumPapersType getEnum(Integer code) { + for (EnumPapersType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumPapersType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTaxpayerType.java b/mallinkService/src/main/java/com/iformall/enums/EnumTaxpayerType.java new file mode 100644 index 000000000..b61182a8f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTaxpayerType.java @@ -0,0 +1,38 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ + +public enum EnumTaxpayerType { + + NORMAL(1, "一般纳税人"), + SMALL_SCALE(2, "小规模纳税人") + ; + + public static EnumTaxpayerType getEnum(Integer code) { + for (EnumTaxpayerType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumTaxpayerType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java b/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java index 1839fa971..1a8eee3d6 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxRentContractService.java @@ -55,4 +55,6 @@ public interface WxRentContractService { Object getRentContractList(String tenantId, Integer pageNum, Integer pageSize); + void exportContract(HttpServletRequest request, HttpServletResponse response, String tenantId); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index 28b3e32d0..1538b9abb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -1,5 +1,6 @@ package com.iformall.service.impl; +import cn.afterturn.easypoi.word.WordExportUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; @@ -13,12 +14,16 @@ import com.iformall.mapper.*; import com.iformall.service.WxMerchantService; import com.iformall.service.WxRentContractService; import com.iformall.utils.Constant; +import com.iformall.utils.DateUtils; +import org.apache.commons.io.FileUtils; +import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.shiro.SecurityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.Assert; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -27,6 +32,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.net.HttpURLConnection; import java.net.URL; +import java.net.URLEncoder; import java.util.*; /** @@ -57,6 +63,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { @Autowired WxMerchantMapper wxMerchantMapper; + @Autowired + WxBusinessMapper wxBusinessMapper; + + @Autowired + WxMallMapper wxMallMapper; @Override public Map listAsPage(WxRentContract record, Integer pageIndex, Integer pageSize) { @@ -80,7 +91,6 @@ public class WxRentContractServiceImpl implements WxRentContractService { wxRentContract.setPrice(wxRentContract.getPrice() != null ? wxRentContract.getPrice() : 0); wxRentContract.setDeposit(wxRentContract.getDeposit() != null ? wxRentContract.getDeposit() : 0); - result.put("wxRentContract", wxRentContract); //关联的商户 if (wxRentContract.getMerchantId() != null) { @@ -125,7 +135,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { && !rc.get("status").equals(EnumRentContractStatus.WAIT_SIGN.getCode()) && !rc.get("status").equals(EnumRentContractStatus.INVALID.getCode()) && !rc.get("status").equals(EnumRentContractStatus.CONTRACT_END.getCode())).count(); - if(count>0){ + if (count > 0) { return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND); } wxRentContractMapper.insertSelective(record); @@ -145,25 +155,24 @@ public class WxRentContractServiceImpl implements WxRentContractService { instance.add(Calendar.DAY_OF_MONTH, -1); record.setRentalEndDate(instance.getTime()); - if(record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())){ - if(record.getRevenue()==null || record.getRevenue().intValue()==0){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"营业额不能为空且大于0"); + if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { + if (record.getRevenue() == null || record.getRevenue().intValue() == 0) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "营业额不能为空且大于0"); } - if(record.getPayRatio()==null || record.getPayRatio().intValue()==0){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"支付比例不能为空且大于0"); + if (record.getPayRatio() == null || record.getPayRatio().intValue() == 0) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "支付比例不能为空且大于0"); } BigDecimal hundred = new BigDecimal(100); - BigDecimal oneThousand = new BigDecimal(10000); BigDecimal revenue = new BigDecimal(record.getRevenue()).divide(hundred); - BigDecimal payRatio = new BigDecimal(record.getPayRatio()).divide(oneThousand); - BigDecimal price = revenue.multiply(payRatio).setScale(2,RoundingMode.HALF_EVEN); + BigDecimal payRatio = new BigDecimal(record.getPayRatio()).divide(hundred); + BigDecimal price = revenue.multiply(payRatio).setScale(2, RoundingMode.HALF_EVEN); record.setPrice(price.multiply(hundred).intValue()); } - if(record.getPrice()==null || record.getPrice().intValue()==0){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"租金不能为空且大于0"); + if (record.getPrice() == null || record.getPrice().intValue() == 0) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "租金不能为空且大于0"); } - if(record.getDeposit()==null || record.getDeposit().intValue()==0){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"押金不能为空且大于0"); + if (record.getDeposit() == null || record.getDeposit().intValue() == 0) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "押金不能为空且大于0"); } record.setUpdatetime(new Date()); @@ -177,7 +186,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { && !rc.get("status").equals(EnumRentContractStatus.INVALID.getCode()) && !rc.get("status").equals(EnumRentContractStatus.CONTRACT_END.getCode()) && !rc.get("id").equals(wxRentContract.getId())).count(); - if(count>0){ + if (count > 0) { return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND); } wxRentContractMapper.updateByPrimaryKeySelective(record); @@ -422,9 +431,9 @@ public class WxRentContractServiceImpl implements WxRentContractService { HashMap shopMap = new HashMap<>(3); int rentedCount = rentedList.size(); int unrentedCount = unrentedList.size(); - shopMap.put("rentedCount",rentedCount); - shopMap.put("unrentedCount",unrentedCount); - shopMap.put("allCount",rentedCount+unrentedCount); + shopMap.put("rentedCount", rentedCount); + shopMap.put("unrentedCount", unrentedCount); + shopMap.put("allCount", rentedCount + unrentedCount); resultData.put("shopCountInfo", shopMap); //需要更新的状态 @@ -447,15 +456,15 @@ public class WxRentContractServiceImpl implements WxRentContractService { //停用商户 wxMerchantService.disable(wxRentContract.getMerchantId()); //物业合同终止 - if(status==1){ + if (status == 1) { WxPropertyContract wxPropertyContract = new WxPropertyContract(); wxRentContract.setTenantId(wxRentContract.getTenantId()); wxPropertyContract.setRentContractId(id); List> contractData = wxPropertyContractMapper.queryPropertyContractData(wxPropertyContract); - if(contractData.size()>0){ + if (contractData.size() > 0) { Map propertyContract = contractData.get(0); Long propertyContractId = (Long) propertyContract.get("id"); - if(propertyContract!=null && propertyContractId!=null){ + if (propertyContract != null && propertyContractId != null) { WxPropertyContract propertyContractUpdate = wxPropertyContractMapper.selectByPrimaryKey(propertyContractId); propertyContractUpdate.setStatus(EnumRentContractStatus.CONTRACT_TERMINATE.getCode()); propertyContractUpdate.setUpdatetime(new Date()); @@ -540,14 +549,14 @@ public class WxRentContractServiceImpl implements WxRentContractService { wxRentContract.setTenantId(tenantId); wxRentContract.setStatus(EnumRentContractStatus.CONTRACT_END.getCode()); List> rentContractData = wxRentContractMapper.queryRentContractData(wxRentContract); - for(int i=0,size=rentContractData.size();i contract = rentContractData.get(i); Object merchantId = contract.get("merchantId"); - if(merchantId!=null){ + if (merchantId != null) { WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(merchantId); Integer status = merchant.getStatus(); - if(status.equals(EnumMerchantStatus.VALID.getCode())){ - wxMerchantService.disable((Long)merchantId); + if (status.equals(EnumMerchantStatus.VALID.getCode())) { + wxMerchantService.disable((Long) merchantId); } } } @@ -621,4 +630,360 @@ public class WxRentContractServiceImpl implements WxRentContractService { } } + + @Override + public void exportContract(HttpServletRequest request, HttpServletResponse response, String tenantId) { + String id = request.getParameter("id"); + String contracType = "0"; + String templatePath = null; + Map result = null; + if (EnumContractType.ALL.getCode().toString().equals(contracType)) { + logger.info("获取租赁及物业合同数据"); + result = getRentAndPropertyInfo(id); + result.put("contractType",EnumContractType.ALL.getMessage()); + templatePath = "contract-word-template/contract_rent_property.docx"; + logger.info("租赁及物业合同数据结果:" + result); + } + + if (templatePath == null) { + logger.info("没有租赁及物业合同模板"); + return; + } + String filepath = Constant.fileDirectory; + String filename = UUID.randomUUID() + ".docx"; + exportWord(templatePath, filepath, filename, result, request, response); + } + + public Map getRentAndPropertyInfo(String id) { + logger.info("获取租赁物业合同数据>>>>>>id:"+id); + WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(id); + WxShop record = new WxShop(); + record.setId(wxRentContract.getShopId()); + Map wxShop = wxShopMapper.findListMap(record).get(0); + Map result = new HashMap<>(); + //MALL信息 + WxMall wxMall = new WxMall(); + wxMall.setTenantId(wxRentContract.getTenantId()); + wxMall = wxMallMapper.findList(wxMall).get(0); + result.put("mallName", wxMall.getName()); + result.put("province", wxMall.getProvince()); + result.put("city", wxMall.getCity()); + //经营业态 + WxBusiness wxBusiness = wxBusinessMapper.selectByPrimaryKey(wxRentContract.getBusinessId()); + result.put("business", wxBusiness.getTitle()); + //店铺信息 + result.put("shopNumber", wxShop.get("shopNumber")); + result.put("floorName", wxShop.get("floor")); + result.put("buildingName", wxShop.get("building")); + result.put("buildArea", wxShop.get("buildArea")); + result.put("operationArea", wxShop.get("operationArea")); + //商户信息 + WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(wxRentContract.getMerchantId()); + result.put("corpPapersNumber", merchant.getCorpPapersNumber()!=null?merchant.getCorpPapersNumber():" "); + result.put("corpPapersType", merchant.getCorpPapersType()!=null?EnumPapersType.getEnum(merchant.getCorpPapersType()).getMessage():" "); + result.put("corpPapersPerson", merchant.getCorpPapersPerson()!=null?merchant.getCorpPapersPerson():" "); + result.put("taxPapersType", merchant.getTaxPapersType()!=null?EnumTaxpayerType.getEnum(merchant.getTaxPapersType()).getMessage():" "); + result.put("bankName", merchant.getBankName()!=null?merchant.getBankName():" "); + result.put("bankAccount", merchant.getBankAccount()!=null?merchant.getBankAccount():" "); + result.put("invoiceAddressPhone", merchant.getInvoiceAddressPhone()!=null?merchant.getInvoiceAddressPhone():" "); + //租赁合同信息 + String rentalStartDate = DateUtils.date2String(wxRentContract.getRentalStartDate(), "yyyy-MM-dd"); + result.put("rentalStartDate", rentalStartDate); + result.put("rentalStartDateYear", rentalStartDate.substring(0, 4)); + result.put("rentalStartDateMonth", rentalStartDate.substring(5, 7)); + result.put("rentalStartDateDay", rentalStartDate.substring(8)); + String rentalEndDate = DateUtils.date2String(wxRentContract.getRentalEndDate(), "yyyy-MM-dd"); + result.put("rentalEndDate", rentalEndDate); + result.put("rentalEndDateYear", rentalEndDate.substring(0, 4)); + result.put("rentalEndDateMonth", rentalEndDate.substring(5, 7)); + result.put("rentalEndDateDay", rentalEndDate.substring(8)); + result.put("price", wxRentContract.getPrice()); + result.put("contractNumber", wxRentContract.getContractNumber()); + Integer lease = wxRentContract.getLease(); + Integer receivePeriod = wxRentContract.getReceivePeriod(); + result.put("lease", lease); + result.put("receivePeriod", receivePeriod); + result.put("payAccount", wxRentContract.getPayAccount().equals("") ? " " : wxRentContract.getPayAccount()); + result.put("signDate", DateUtils.date2String(wxRentContract.getSignDate(), "yyyy-MM-dd")); + result.put("brand", wxRentContract.getBrand()); + double adjustRatio = wxRentContract.getAdjustRatio()!=null?wxRentContract.getAdjustRatio() / 100.0:0; + result.put("adjustRatio", adjustRatio); + double priceRent = new BigDecimal(wxRentContract.getPrice()) + .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + result.put("priceRent",priceRent); + double unitPrice = new BigDecimal(wxRentContract.getPrice()) + .divide(new BigDecimal(wxRentContract.getRentArea()),2,RoundingMode.HALF_EVEN) + .divide(new BigDecimal(100)) + .setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + result.put("unitPriceRent", unitPrice); + result.put("priceRentUpper",digitUppercase(priceRent)); + result.put("unitPriceRentUpper", digitUppercase(unitPrice)); + //租赁保证金 + int cashDepositMonthRent=3; + double cashDepositRent = new BigDecimal(wxRentContract.getPrice()).multiply(new BigDecimal(cashDepositMonthRent)) + .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + result.put("cashDepositMonthRent", cashDepositMonthRent); + result.put("cashDepositRent", cashDepositRent); + result.put("cashDepositRentUpper", digitUppercase(cashDepositRent)); + + 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> first = wxPropertyContractMapper.queryPropertyContractData(propertyContract) + .stream().filter(rc -> !rc.get("status").equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode()) + && !rc.get("status").equals(EnumRentContractStatus.WAIT_SIGN.getCode()) + && !rc.get("status").equals(EnumRentContractStatus.INVALID.getCode()) + && !rc.get("status").equals(EnumRentContractStatus.CONTRACT_END.getCode())).findFirst(); + Map wxPropertyContract = null; + if(first.isPresent()){ + wxPropertyContract = first.get(); + } + if(wxPropertyContract!=null){ + Integer receivePeriodProperty = (Integer)wxPropertyContract.get("receivePeriod"); + result.put("receivePeriodProperty",receivePeriodProperty); + double priceProperty = new BigDecimal(wxPropertyContract.get("price").toString()) + .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + result.put("priceProperty",priceProperty); + double unitPriceProperty = new BigDecimal(wxPropertyContract.get("price").toString()) + .divide(new BigDecimal(wxRentContract.getRentArea()) + .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN)).doubleValue(); + result.put("unitPriceProperty", unitPriceProperty); + result.put("pricePropertyUpper",digitUppercase(priceProperty)); + result.put("unitPricePropertyUpper", digitUppercase(unitPriceProperty)); + //首期物业费 + Calendar instance = Calendar.getInstance(); + instance.setTime(wxRentContract.getRentalStartDate()); + instance.add(Calendar.MONTH, 0); + Date starttime = instance.getTime(); + String startdate = DateUtils.date2String(starttime, "yyyy-MM-dd"); + result.put("rentalStartDateProperty",startdate); + result.put("rentalStartDateYearProperty", startdate.substring(0, 4)); + result.put("rentalStartDateMonthProperty", startdate.substring(5, 7)); + result.put("rentalStartDateDayProperty", startdate.substring(8)); + //结束时间 + instance.clear(); + instance.setTime(starttime); + instance.add(Calendar.MONTH, receivePeriodProperty); + instance.add(Calendar.DAY_OF_MONTH, -1); + Date endtime = instance.getTime(); + String enddate = DateUtils.date2String(endtime, "yyyy-MM-dd"); + result.put("rentalEndDateProperty",enddate); + result.put("rentalEndDateYearProperty", enddate.substring(0, 4)); + result.put("rentalEndDateMonthProperty", enddate.substring(5, 7)); + result.put("rentalEndDateDayProperty", enddate.substring(8)); + double pricePropertyFirst = new BigDecimal(priceProperty) + .multiply(new BigDecimal(receivePeriodProperty)) + .setScale(2,RoundingMode.HALF_EVEN).doubleValue(); + result.put("pricePropertyFirst",pricePropertyFirst); + result.put("pricePropertyFirstUpper",digitUppercase(pricePropertyFirst)); + + + //物业保证金 + int cashDepositMonthProperty=3; + double cashDepositProperty = new BigDecimal(wxPropertyContract.get("price").toString()).multiply(new BigDecimal(cashDepositMonthProperty)) + .divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); + result.put("cashDepositMonthProperty", cashDepositMonthProperty); + result.put("cashDepositProperty", cashDepositProperty); + result.put("cashDepositPropertyUpper", digitUppercase(cashDepositProperty)); + + + }else{ + result.put("receivePeriodProperty"," "); + result.put("priceProperty"," "); + result.put("unitPriceProperty", " "); + result.put("pricePropertyUpper"," "); + result.put("unitPricePropertyUpper", " "); + //首期物业费 + result.put("rentalStartDateProperty"," "); + result.put("rentalStartDateYearProperty", " "); + result.put("rentalStartDateMonthProperty", " "); + result.put("rentalStartDateDayProperty"," "); + //结束时间 + result.put("rentalEndDateProperty"," "); + result.put("rentalEndDateYearProperty", " "); + result.put("rentalEndDateMonthProperty"," "); + result.put("rentalEndDateDayProperty", " "); + result.put("pricePropertyFirst"," "); + result.put("pricePropertyFirstUpper"," "); + //物业保证金 + result.put("cashDepositMonthProperty", " "); + result.put("cashDepositProperty", " "); + result.put("cashDepositPropertyUpper", " "); + } + + + return result; + } + + /** + * 导出word + *

第一步生成替换后的word文件,只支持docx

+ *

第二步下载生成的文件

+ *

第三步删除生成的临时文件

+ * 模版变量中变量格式:{{foo}} + * + * @param templatePath word模板地址 + * @param temDir 生成临时文件存放地址 + * @param fileName 文件名 + * @param params 替换的参数 + * @param request HttpServletRequest + * @param response HttpServletResponse + */ + public void exportWord(String templatePath, String temDir, String fileName, Map params, HttpServletRequest request, HttpServletResponse response) { + Assert.notNull(templatePath, "模板路径不能为空"); + Assert.notNull(temDir, "临时文件路径不能为空"); + Assert.notNull(fileName, "导出文件名不能为空"); + Assert.isTrue(fileName.endsWith(".docx"), "word导出请使用docx格式"); + if (!temDir.endsWith("/")) { + temDir = temDir + File.separator; + } + File dir = new File(temDir); + if (!dir.exists()) { + dir.mkdirs(); + } + try { + String userAgent = request.getHeader("user-agent").toLowerCase(); + if (userAgent.contains("msie") || userAgent.contains("like gecko")) { + fileName = URLEncoder.encode(fileName, "UTF-8"); + } else { + fileName = new String(fileName.getBytes("utf-8"), "ISO-8859-1"); + } + XWPFDocument doc = WordExportUtil.exportWord07(templatePath, params); + String tmpPath = temDir + fileName; + FileOutputStream fos = new FileOutputStream(tmpPath); + doc.write(fos); + // 设置强制下载不打开 + response.setContentType("application/force-download"); + // 设置文件名 + response.addHeader("Content-Disposition", "attachment;fileName=" + fileName); + OutputStream out = response.getOutputStream(); + doc.write(out); + out.close(); + FileUtils.forceDelete(new File(tmpPath)); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + public static void main(String[] args) { + BigDecimal multiply = new BigDecimal(8059.99).multiply(new BigDecimal(0.07)); + BigDecimal add = multiply.add(new BigDecimal(8059.99)).setScale(2,RoundingMode.HALF_EVEN); + System.out.println(add.doubleValue()); + + } + + + /** + * 数字金额大写转换,思想先写个完整的然后将如零拾替换成零 要用到正则表达式 + */ + public static String digitUppercase(double n) { + String fraction[] = {"角", "分"}; + String digit[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; + String unit[][] = {{"圆", "万", "亿"}, {"", "拾", "佰", "仟"}}; + + String head = n < 0 ? "负" : ""; + n = Math.abs(n); + + String s = ""; + for (int i = 0; i < fraction.length; i++) { + s += (digit[(int) (Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", ""); + } + if (s.length() < 1) { + s = "整"; + } + int integerPart = (int) Math.floor(n); + + for (int i = 0; i < unit[0].length && integerPart > 0; i++) { + String p = ""; + for (int j = 0; j < unit[1].length && n > 0; j++) { + p = digit[integerPart % 10] + unit[1][j] + p; + integerPart = integerPart / 10; + } + s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s; + } + return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整"); + } + } diff --git a/mallinkService/src/main/resources/contract-word-template/contract_rent_property.docx b/mallinkService/src/main/resources/contract-word-template/contract_rent_property.docx new file mode 100644 index 0000000000000000000000000000000000000000..25ec2ddfb9faf6118179e4545489352a3f0ee63b GIT binary patch literal 67858 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%0A88CX)O{bnkY&gs@UTf9t;Dxyi{C^W5Dx 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 V=pF?CAOO>6;EPQU1d!1I{|{yU`V{~G literal 0 HcmV?d00001 diff --git a/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml b/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml index 3515b8fd0..51d3bacbc 100644 --- a/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml @@ -86,7 +86,7 @@ select rc.id,rc.merchant_name merchantName,rc.rental_start_date rentalStartDate,rc.rental_end_date rentalEndDate,rc.`status`, rc.price,rc.contract_number contractNumber,s.shop_number shopNumber,f.floor_name floorName,b.building_name - buildingName, + buildingName,receive_period receivePeriod, rc.lease,rc.filepath,rc.filename,rc.pay_account payAccount,rc.sign_date signDate from wx_property_contract rc left join wx_shop s on rc.shop_id=s.id