From 9ada164137b7a21f7880e4045849611ce94f9346 Mon Sep 17 00:00:00 2001 From: luozukai Date: Thu, 21 Feb 2019 13:14:20 +0800 Subject: [PATCH] =?UTF-8?q?[=E9=A2=84=E8=B4=A6=E5=8D=95][=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0][=E5=88=9B=E5=BB=BA=E5=90=88=E5=90=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=A2=84=E8=B4=A6=E5=8D=95]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/domain/po/WxBillProperty.java | 11 +++++ .../com/iformall/domain/po/WxBillRent.java | 11 +++++ .../iformall/domain/po/WxRentContract.java | 11 +++++ .../com/iformall/enums/EnumIsPreview.java | 37 ++++++++++++++++ .../com/iformall/mapper/WxBillRentMapper.java | 3 ++ .../impl/WxRentContractServiceImpl.java | 44 ++++++++++++++----- .../resources/mapper/WxBillPropertyMapper.xml | 4 +- .../resources/mapper/WxBillRentMapper.xml | 10 +++-- .../resources/mapper/WxRentContractMapper.xml | 1 + 9 files changed, 117 insertions(+), 15 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumIsPreview.java diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java index 0ad3c7e54..2ef53c8e1 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java @@ -116,6 +116,17 @@ public class WxBillProperty implements Serializable { @io.swagger.annotations.ApiModelProperty(value = "账期", name = "period") private Integer period; + @io.swagger.annotations.ApiModelProperty(value = "预览账单0否1是", name = "isPreview") + private Integer isPreview; + + public Integer getIsPreview() { + return isPreview; + } + + public void setIsPreview(Integer isPreview) { + this.isPreview = isPreview; + } + public Date getStarttime() { return starttime; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillRent.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillRent.java index a30edfcf4..ae349aeef 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillRent.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillRent.java @@ -118,6 +118,17 @@ public class WxBillRent implements Serializable { @io.swagger.annotations.ApiModelProperty(value = "账期", name = "period") private Integer period; + @io.swagger.annotations.ApiModelProperty(value = "预览账单0否1是", name = "isPreview") + private Integer isPreview; + + public Integer getIsPreview() { + return isPreview; + } + + public void setIsPreview(Integer isPreview) { + this.isPreview = isPreview; + } + public Date getStarttime() { return starttime; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java index 706a87c91..94220b442 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java @@ -205,6 +205,17 @@ public class WxRentContract implements Serializable { @io.swagger.annotations.ApiModelProperty(value = "装修期结束时间", name = "fixEndDate") private Date fixEndDate; + // 预账单列表 + @Transient + private List previewBillRentList; + + public List getPreviewBillRentList() { + return previewBillRentList; + } + + public void setPreviewBillRentList(List previewBillRentList) { + this.previewBillRentList = previewBillRentList; + } public Integer getBusinessType() { return businessType; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumIsPreview.java b/mallinkService/src/main/java/com/iformall/enums/EnumIsPreview.java new file mode 100644 index 000000000..0be8e82eb --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumIsPreview.java @@ -0,0 +1,37 @@ +package com.iformall.enums; + +/** + * Created by luozukai + * 预览账单0否1是 + */ +public enum EnumIsPreview { + + NO(0, "否"), + YES(1, "是") + ; + + public static EnumIsPreview getEnum(Integer code) { + for (EnumIsPreview value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumIsPreview(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/mapper/WxBillRentMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillRentMapper.java index edc675653..57136a467 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxBillRentMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillRentMapper.java @@ -2,6 +2,7 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxBillRent; +import com.iformall.domain.po.WxRentContract; import java.util.List; import java.util.Map; @@ -22,4 +23,6 @@ public interface WxBillRentMapper extends CommonMapper { void updateWaitPayStatus(Map params); void updateInvalidStatus(WxBillRent wxBillRent); + + void deletePreviewBill(WxRentContract wxRentContract); } 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 f36c5974f..7aa8c7458 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -236,7 +236,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { public ResultData update(WxRentContract record, Long userId,String userName) { ResultData resultData = getResultDataForUpdate(record, userId); try { - // 启动审批流 + //启动审批流 if(record.getFlowParams() != null){ record.getFlowParams().put("businessId",record.getId().toString()); if(record.getMerchantId() != null) { @@ -244,7 +244,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { } wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId()); - // 合同状态改成待签约 + //合同状态改成待签约 WxRentContract updateRentContract = new WxRentContract(); updateRentContract.setId(record.getId()); updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); @@ -312,6 +312,25 @@ public class WxRentContractServiceImpl implements WxRentContractService { logger.error("更新租赁合同信息失败,e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } + + //删除预账单 + wxBillRentMapper.deletePreviewBill(record); + //重新生成 + WxMerchant wxMerchant = new WxMerchant(); + buildRent(wxMerchant,null); + int receivePeriod = record.getReceivePeriod().intValue(); + Integer lease = record.getLease(); + Date rentalStartDate = record.getRentalStartDate(); + Integer price = record.getPrice(); + //按月计租 + List resultList; + if (record.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode())) { + resultList = buildRentMonth(wxMerchant, userId, record, receivePeriod, lease, rentalStartDate, price,EnumIsPreview.YES.getCode()); + } else { + //按日计租 + resultList = buildRent(lease, receivePeriod, price, rentalStartDate, Calendar.DAY_OF_MONTH, record, userId, wxMerchant, 0,EnumIsPreview.YES.getCode()); + } + wxRentContract.setPreviewBillRentList(resultList); return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", wxRentContract); } @@ -387,7 +406,6 @@ public class WxRentContractServiceImpl implements WxRentContractService { @Override @Transactional(rollbackFor = {Exception.class}) public void buildRent(WxMerchant wxMerchant, Long userId) { - //根据商户ID找出合同 WxRentContract wxRentContract = new WxRentContract(); wxRentContract.setMerchantId(wxMerchant.getId()); @@ -400,15 +418,15 @@ public class WxRentContractServiceImpl implements WxRentContractService { Integer price = wxRentContract.getPrice(); //按月计租 if (wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode())) { - buildRentMonth(wxMerchant, userId, wxRentContract, receivePeriod, lease, rentalStartDate, price); + buildRentMonth(wxMerchant, userId, wxRentContract, receivePeriod, lease, rentalStartDate, price,EnumIsPreview.NO.getCode()); } else { //按日计租 - buildRent(lease, receivePeriod, price, rentalStartDate, Calendar.DAY_OF_MONTH, wxRentContract, userId, wxMerchant, 0); + buildRent(lease, receivePeriod, price, rentalStartDate, Calendar.DAY_OF_MONTH, wxRentContract, userId, wxMerchant, 0,EnumIsPreview.NO.getCode()); } } } - public void buildRentMonth(WxMerchant wxMerchant, Long userId, WxRentContract wxRentContract, int receivePeriod, Integer lease, Date rentalStartDate, Integer price) { + public List buildRentMonth(WxMerchant wxMerchant, Long userId, WxRentContract wxRentContract, int receivePeriod, Integer lease, Date rentalStartDate, Integer price,Integer isPreview) { String adjustRatio = wxRentContract.getAdjustRatio(); List integers = JSONArray.parseArray(adjustRatio, Integer.class); integers.add(0, 0); @@ -432,17 +450,20 @@ public class WxRentContractServiceImpl implements WxRentContractService { } int billcount = 0; + List resultList = new ArrayList<>(); for (int i = 0; i < size; i++) { Calendar instance = Calendar.getInstance(); instance.setTime(rentalStartDate); //开始时间 instance.add(Calendar.MONTH, month * i); - billcount = buildRent(leaseArr[i], receivePeriod, priceArr[i], instance.getTime(), Calendar.MONTH, wxRentContract, userId, wxMerchant, billcount); + List billRentList = buildRent(leaseArr[i], receivePeriod, priceArr[i], instance.getTime(), Calendar.MONTH, wxRentContract, userId, wxMerchant, billcount,isPreview); + resultList.addAll(billRentList); } + return resultList; } - public int buildRent(int lease, int receivePeriod, int price, Date startdate, int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount) { - + public List buildRent(int lease, int receivePeriod, int price, Date startdate, int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount,Integer isPreview) { + List resultList = new ArrayList<>(); int extralease = lease % receivePeriod; int extracount = extralease > 0 ? 1 : 0; int paycount = lease / receivePeriod + extracount; @@ -450,6 +471,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { final IdWorker idWorker = IdWorker.get(); for (int i = 0; i < paycount; i++) { WxBillRent wxBillRent = new WxBillRent(); + wxBillRent.setIsPreview(isPreview); + wxBillRent.setId(idWorker.nextId()); wxBillRent.setRentContractId(wxRentContract.getId()); wxBillRent.setPay(0); @@ -524,12 +547,13 @@ public class WxRentContractServiceImpl implements WxRentContractService { wxBillRent.setPeriod(++billcount); try { wxBillRentMapper.insertSelective(wxBillRent); + resultList.add(wxBillRent); } catch (Exception e) { logger.error("添加租赁账单失败,e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } } - return billcount; + return resultList; } diff --git a/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml b/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml index 33d03747f..26a58787b 100644 --- a/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml @@ -25,7 +25,7 @@ - + @@ -33,7 +33,7 @@ `id`,`property_contract_id`,`receive_pay`,`pay`,`receive_date`,`pay_date`, `createtime`,`expired_day`,`tenant_id`,`owe`,`status`,`is_del`,`need_pay`, `merchant_id`,`user_id`,`shop_id`,`updatetime`,`rent_shop_type`, - `revenue`,`late_pay_ratio`,`late_pay_time`,`late_pay_price`,`period` + `revenue`,`late_pay_ratio`,`late_pay_time`,`late_pay_price`,`period`,`is_preview` diff --git a/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml index 6abc786ab..b0127abc9 100644 --- a/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml @@ -25,14 +25,15 @@ - + + `id`,`rent_contract_id`,`receive_pay`,`pay`,`receive_date`,`pay_date`, `createtime`,`expired_day`,`tenant_id`,`owe`,`status`,`is_del`,`need_pay`, `merchant_id`,`user_id`,`shop_id`,`updatetime`,`rent_shop_type`, - `revenue`,`late_pay_ratio`,`late_pay_time`,`late_pay_price`,`period` + `revenue`,`late_pay_ratio`,`late_pay_time`,`late_pay_price`,`period`,`is_preview` @@ -124,6 +125,9 @@ update wx_bill_rent set status = 6 where rent_contract_id = #{rentContractId} and status = 4 - + + + delete from wx_bill_rent where rent_contract_id = #{id} + diff --git a/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml b/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml index 14c2a845f..6fa24edc5 100644 --- a/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml @@ -41,6 +41,7 @@ +