Просмотр исходного кода

[预账单][添加][创建合同添加预账单]

release_toaliyun_real
luozukai 7 лет назад
committed by Stormeye Wu
Родитель
Сommit
84485ab5fc
9 измененных файлов: 117 добавлений и 15 удалений
  1. +11
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java
  2. +11
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxBillRent.java
  3. +11
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java
  4. +37
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumIsPreview.java
  5. +3
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxBillRentMapper.java
  6. +34
    -10
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java
  7. +2
    -2
      mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml
  8. +7
    -3
      mallinkService/src/main/resources/mapper/WxBillRentMapper.xml
  9. +1
    -0
      mallinkService/src/main/resources/mapper/WxRentContractMapper.xml

+ 11
- 0
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") @io.swagger.annotations.ApiModelProperty(value = "账期", name = "period")
private Integer 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() { public Date getStarttime() {
return starttime; return starttime;
} }


+ 11
- 0
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") @io.swagger.annotations.ApiModelProperty(value = "账期", name = "period")
private Integer 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() { public Date getStarttime() {
return starttime; return starttime;
} }


+ 11
- 0
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") @io.swagger.annotations.ApiModelProperty(value = "装修期结束时间", name = "fixEndDate")
private Date fixEndDate; private Date fixEndDate;


// 预账单列表
@Transient
private List<WxBillRent> previewBillRentList;

public List<WxBillRent> getPreviewBillRentList() {
return previewBillRentList;
}

public void setPreviewBillRentList(List<WxBillRent> previewBillRentList) {
this.previewBillRentList = previewBillRentList;
}


public Integer getBusinessType() { public Integer getBusinessType() {
return businessType; return businessType;


+ 37
- 0
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;
}
}

+ 3
- 0
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.common.CommonMapper;
import com.iformall.domain.po.WxBillRent; import com.iformall.domain.po.WxBillRent;
import com.iformall.domain.po.WxRentContract;


import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -22,4 +23,6 @@ public interface WxBillRentMapper extends CommonMapper<WxBillRent, Long> {
void updateWaitPayStatus(Map<String,Object> params); void updateWaitPayStatus(Map<String,Object> params);


void updateInvalidStatus(WxBillRent wxBillRent); void updateInvalidStatus(WxBillRent wxBillRent);

void deletePreviewBill(WxRentContract wxRentContract);
} }

+ 34
- 10
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) { public ResultData update(WxRentContract record, Long userId,String userName) {
ResultData resultData = getResultDataForUpdate(record, userId); ResultData resultData = getResultDataForUpdate(record, userId);
try { try {
// 启动审批流
//启动审批流
if(record.getFlowParams() != null){ if(record.getFlowParams() != null){
record.getFlowParams().put("businessId",record.getId().toString()); record.getFlowParams().put("businessId",record.getId().toString());
if(record.getMerchantId() != null) { if(record.getMerchantId() != null) {
@@ -244,7 +244,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
} }
wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId()); wxFlowService.start(record.getFlowParams(),userId,userName,record.getTenantId());


// 合同状态改成待签约
//合同状态改成待签约
WxRentContract updateRentContract = new WxRentContract(); WxRentContract updateRentContract = new WxRentContract();
updateRentContract.setId(record.getId()); updateRentContract.setId(record.getId());
updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); updateRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode());
@@ -312,6 +312,25 @@ public class WxRentContractServiceImpl implements WxRentContractService {
logger.error("更新租赁合同信息失败,e:" + e.getMessage()); logger.error("更新租赁合同信息失败,e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + 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<WxBillRent> 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); return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", wxRentContract);
} }


@@ -387,7 +406,6 @@ public class WxRentContractServiceImpl implements WxRentContractService {
@Override @Override
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
public void buildRent(WxMerchant wxMerchant, Long userId) { public void buildRent(WxMerchant wxMerchant, Long userId) {

//根据商户ID找出合同 //根据商户ID找出合同
WxRentContract wxRentContract = new WxRentContract(); WxRentContract wxRentContract = new WxRentContract();
wxRentContract.setMerchantId(wxMerchant.getId()); wxRentContract.setMerchantId(wxMerchant.getId());
@@ -400,15 +418,15 @@ public class WxRentContractServiceImpl implements WxRentContractService {
Integer price = wxRentContract.getPrice(); Integer price = wxRentContract.getPrice();
//按月计租 //按月计租
if (wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_MONTH.getCode())) { 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 { } 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<WxBillRent> buildRentMonth(WxMerchant wxMerchant, Long userId, WxRentContract wxRentContract, int receivePeriod, Integer lease, Date rentalStartDate, Integer price,Integer isPreview) {
String adjustRatio = wxRentContract.getAdjustRatio(); String adjustRatio = wxRentContract.getAdjustRatio();
List<Integer> integers = JSONArray.parseArray(adjustRatio, Integer.class); List<Integer> integers = JSONArray.parseArray(adjustRatio, Integer.class);
integers.add(0, 0); integers.add(0, 0);
@@ -432,17 +450,20 @@ public class WxRentContractServiceImpl implements WxRentContractService {
} }


int billcount = 0; int billcount = 0;
List<WxBillRent> resultList = new ArrayList<>();
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
Calendar instance = Calendar.getInstance(); Calendar instance = Calendar.getInstance();
instance.setTime(rentalStartDate); instance.setTime(rentalStartDate);
//开始时间 //开始时间
instance.add(Calendar.MONTH, month * i); instance.add(Calendar.MONTH, month * i);
billcount = buildRent(leaseArr[i], receivePeriod, priceArr[i], instance.getTime(), Calendar.MONTH, wxRentContract, userId, wxMerchant, billcount);
List<WxBillRent> 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<WxBillRent> buildRent(int lease, int receivePeriod, int price, Date startdate, int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount,Integer isPreview) {
List<WxBillRent> resultList = new ArrayList<>();
int extralease = lease % receivePeriod; int extralease = lease % receivePeriod;
int extracount = extralease > 0 ? 1 : 0; int extracount = extralease > 0 ? 1 : 0;
int paycount = lease / receivePeriod + extracount; int paycount = lease / receivePeriod + extracount;
@@ -450,6 +471,8 @@ public class WxRentContractServiceImpl implements WxRentContractService {
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
for (int i = 0; i < paycount; i++) { for (int i = 0; i < paycount; i++) {
WxBillRent wxBillRent = new WxBillRent(); WxBillRent wxBillRent = new WxBillRent();
wxBillRent.setIsPreview(isPreview);

wxBillRent.setId(idWorker.nextId()); wxBillRent.setId(idWorker.nextId());
wxBillRent.setRentContractId(wxRentContract.getId()); wxBillRent.setRentContractId(wxRentContract.getId());
wxBillRent.setPay(0); wxBillRent.setPay(0);
@@ -524,12 +547,13 @@ public class WxRentContractServiceImpl implements WxRentContractService {
wxBillRent.setPeriod(++billcount); wxBillRent.setPeriod(++billcount);
try { try {
wxBillRentMapper.insertSelective(wxBillRent); wxBillRentMapper.insertSelective(wxBillRent);
resultList.add(wxBillRent);
} catch (Exception e) { } catch (Exception e) {
logger.error("添加租赁账单失败,e:" + e.getMessage()); logger.error("添加租赁账单失败,e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
} }
} }
return billcount;
return resultList;
} }






+ 2
- 2
mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml Просмотреть файл

@@ -25,7 +25,7 @@
<result column="late_pay_time" jdbcType="TIMESTAMP" property="latePayTime"/> <result column="late_pay_time" jdbcType="TIMESTAMP" property="latePayTime"/>
<result column="late_pay_price" jdbcType="INTEGER" property="latePayPrice"/> <result column="late_pay_price" jdbcType="INTEGER" property="latePayPrice"/>
<result column="period" jdbcType="INTEGER" property="period"/> <result column="period" jdbcType="INTEGER" property="period"/>
<result column="is_preview" property="isPreview"/>
</resultMap> </resultMap>
@@ -33,7 +33,7 @@
`id`,`property_contract_id`,`receive_pay`,`pay`,`receive_date`,`pay_date`, `id`,`property_contract_id`,`receive_pay`,`pay`,`receive_date`,`pay_date`,
`createtime`,`expired_day`,`tenant_id`,`owe`,`status`,`is_del`,`need_pay`, `createtime`,`expired_day`,`tenant_id`,`owe`,`status`,`is_del`,`need_pay`,
`merchant_id`,`user_id`,`shop_id`,`updatetime`,`rent_shop_type`, `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`


</sql> </sql>




+ 7
- 3
mallinkService/src/main/resources/mapper/WxBillRentMapper.xml Просмотреть файл

@@ -25,14 +25,15 @@
<result column="late_pay_time" jdbcType="TIMESTAMP" property="latePayTime"/> <result column="late_pay_time" jdbcType="TIMESTAMP" property="latePayTime"/>
<result column="late_pay_price" jdbcType="INTEGER" property="latePayPrice"/> <result column="late_pay_price" jdbcType="INTEGER" property="latePayPrice"/>
<result column="period" jdbcType="INTEGER" property="period"/> <result column="period" jdbcType="INTEGER" property="period"/>
<result column="is_preview" property="isPreview"/>

</resultMap> </resultMap>
<sql id="allColumns"> <sql id="allColumns">
`id`,`rent_contract_id`,`receive_pay`,`pay`,`receive_date`,`pay_date`, `id`,`rent_contract_id`,`receive_pay`,`pay`,`receive_date`,`pay_date`,
`createtime`,`expired_day`,`tenant_id`,`owe`,`status`,`is_del`,`need_pay`, `createtime`,`expired_day`,`tenant_id`,`owe`,`status`,`is_del`,`need_pay`,
`merchant_id`,`user_id`,`shop_id`,`updatetime`,`rent_shop_type`, `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`
</sql> </sql>
<sql id="dynamicWhereConditions"> <sql id="dynamicWhereConditions">
@@ -124,6 +125,9 @@
update wx_bill_rent set status = 6 where rent_contract_id = #{rentContractId} update wx_bill_rent set status = 6 where rent_contract_id = #{rentContractId}
and status = 4 and status = 4
</update> </update>

<delete id="deletePreviewBill" parameterType="com.iformall.domain.po.WxRentContract">
delete from wx_bill_rent where rent_contract_id = #{id}
</delete>


</mapper> </mapper>

+ 1
- 0
mallinkService/src/main/resources/mapper/WxRentContractMapper.xml Просмотреть файл

@@ -41,6 +41,7 @@
<result column="fix_start_date" property="fixStartDate"/> <result column="fix_start_date" property="fixStartDate"/>
<result column="fix_end_date" property="fixEndDate"/> <result column="fix_end_date" property="fixEndDate"/>
<result column="business_type" property="businessType"/> <result column="business_type" property="businessType"/>
<result column="receive_period" property="receivePeriod"/>
</resultMap> </resultMap>
<sql id="allColumns"> <sql id="allColumns">


Загрузка…
Отмена
Сохранить