Procházet zdrojové kódy

[合同][修改][开发账单结算]

release_toaliyun_real
luozukai před 6 roky
rodič
revize
ce2b0212e6
4 změnil soubory, kde provedl 74 přidání a 23 odebrání
  1. +32
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumGetRatioFrom.java
  2. +4
    -6
      mallinkService/src/main/java/com/iformall/enums/EnumMissTimeType.java
  3. +6
    -4
      mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java
  4. +32
    -13
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java

+ 32
- 0
mallinkService/src/main/java/com/iformall/enums/EnumGetRatioFrom.java Zobrazit soubor

@@ -0,0 +1,32 @@
package com.iformall.enums;

public enum EnumGetRatioFrom {
RENT(1, "合同"),
BILL(2, "账单录入营业额"),
;

public static EnumGetRatioFrom getEnum(Integer code) {
for (EnumGetRatioFrom value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumGetRatioFrom(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 4
- 6
mallinkService/src/main/java/com/iformall/enums/EnumMissTimeType.java Zobrazit soubor

@@ -1,13 +1,11 @@
package com.iformall.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumMissTimeType {

YEAR(1, "残年"),
MONTH(2, "残月"),
OTHER(3, "其他"),
YEAR(1, "年"),
MONTH(2, "月"),
PERIOD(3, "周期"),
OTHER(4, "其他"),
;

public static EnumMissTimeType getEnum(Integer code) {


+ 6
- 4
mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java Zobrazit soubor

@@ -289,17 +289,19 @@ public class WxBillRentServiceImpl implements WxBillRentService {
if(EnumBusRatioTime.YEAR.getCode().equals(wxRentContract.getBusDiscountTime())){
if(startInt == endInt && months == 12){
//刚好1年
ratio = WxRentContractServiceImpl.getPayRatio(wxBillRent.getRevenue(),wxRentContract.getBusDiscountRatio(),EnumMissTimeType.OTHER.getCode(),dayCount).getRatio();
ratio = WxRentContractServiceImpl.getPayRatio(EnumGetRatioFrom.BILL.getCode(),wxBillRent.getRevenue(),wxRentContract.getBusDiscountRatio(),EnumMissTimeType.OTHER.getCode(),dayCount,0).getRatio();
}else{
ratio = WxRentContractServiceImpl.getPayRatio(wxBillRent.getRevenue(),wxRentContract.getBusDiscountRatio(),EnumMissTimeType.YEAR.getCode(),dayCount).getRatio();
ratio = WxRentContractServiceImpl.getPayRatio(EnumGetRatioFrom.BILL.getCode(),wxBillRent.getRevenue(),wxRentContract.getBusDiscountRatio(),EnumMissTimeType.YEAR.getCode(),dayCount,0).getRatio();
}
}else if(EnumBusRatioTime.MONTH.getCode().equals(wxRentContract.getBusDiscountTime())){
if(startInt == endInt && months == 1){
//刚好1个月
ratio = WxRentContractServiceImpl.getPayRatio(wxBillRent.getRevenue(),wxRentContract.getBusDiscountRatio(),EnumMissTimeType.OTHER.getCode(),dayCount).getRatio();
ratio = WxRentContractServiceImpl.getPayRatio(EnumGetRatioFrom.BILL.getCode(),wxBillRent.getRevenue(),wxRentContract.getBusDiscountRatio(),EnumMissTimeType.OTHER.getCode(),dayCount,0).getRatio();
}else{
ratio = WxRentContractServiceImpl.getPayRatio(wxBillRent.getRevenue(),wxRentContract.getBusDiscountRatio(),EnumMissTimeType.MONTH.getCode(),dayCount).getRatio();
ratio = WxRentContractServiceImpl.getPayRatio(EnumGetRatioFrom.BILL.getCode(),wxBillRent.getRevenue(),wxRentContract.getBusDiscountRatio(),EnumMissTimeType.MONTH.getCode(),dayCount,0).getRatio();
}
}else if(EnumBusRatioTime.PERIOD.getCode().equals(wxRentContract.getBusDiscountTime())){
ratio = WxRentContractServiceImpl.getPayRatio(EnumGetRatioFrom.BILL.getCode(),wxBillRent.getRevenue(),wxRentContract.getBusDiscountRatio(),EnumMissTimeType.PERIOD.getCode(),dayCount,wxRentContract.getReceivePeriod()).getRatio();
}
}



+ 32
- 13
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java Zobrazit soubor

@@ -253,7 +253,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
* 获取设置的跳点率
* ["1000-1200:10",">3000:20"]
*/
public static RatioVo getPayRatio(Long revenueLong,String busDiscountRatio,int timeType,long dayCount){
public static RatioVo getPayRatio(int from,Long revenueLong,String busDiscountRatio,int timeType,long dayCount,int period){
RatioVo ratioVo = new RatioVo();
BigDecimal revenue = new BigDecimal(revenueLong).divide(new BigDecimal(1000000)).setScale(4, RoundingMode.HALF_EVEN);
List<String> ratioList = JSONArray.parseArray(busDiscountRatio, String.class);
@@ -270,13 +270,22 @@ public class WxRentContractServiceImpl implements WxRentContractService {

//残年 (小金额 / 365 * 账单周期天数 )--(大金额 / 365 * 账单周期天数)
if(EnumMissTimeType.YEAR.getCode().equals(timeType)){
start = new BigDecimal(revenueArray[0]).divide(new BigDecimal(365),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(365),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
//revenue = revenue.divide(new BigDecimal(365));
if(EnumGetRatioFrom.BILL.getCode().equals(from)) {
start = new BigDecimal(revenueArray[0]).divide(new BigDecimal(365), 10, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(365), 10, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
}
if(EnumGetRatioFrom.RENT.getCode().equals(from)) {
revenue = revenue.divide(new BigDecimal(12));
}
}else if(EnumMissTimeType.MONTH.getCode().equals(timeType)){
start = new BigDecimal(revenueArray[0]).divide(new BigDecimal(30),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(30),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
//revenue = revenue.divide(new BigDecimal(30));
if(EnumGetRatioFrom.BILL.getCode().equals(from)) {
start = new BigDecimal(revenueArray[0]).divide(new BigDecimal(30), 10, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(30), 10, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
}
}else if(EnumMissTimeType.PERIOD.getCode().equals(timeType)){
if(EnumGetRatioFrom.RENT.getCode().equals(from)) {
revenue = revenue.divide(new BigDecimal(period));
}
}

if (revenue.compareTo(start) >= 0 && revenue.compareTo(end)<= 0){
@@ -289,12 +298,22 @@ public class WxRentContractServiceImpl implements WxRentContractService {

//残年 (小金额 / 365 * 账单周期天数 )--(大金额 / 365 * 账单周期天数)
if(EnumMissTimeType.YEAR.getCode().equals(timeType)){
end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(365),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
//revenue = revenue.divide(new BigDecimal(365));
if(EnumGetRatioFrom.BILL.getCode().equals(from)) {
end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(365), 10, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
}
if(EnumGetRatioFrom.RENT.getCode().equals(from)) {
revenue = revenue.divide(new BigDecimal(12));
}
}else if(EnumMissTimeType.MONTH.getCode().equals(timeType)){
end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(30),10,BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
//revenue = revenue.divide(new BigDecimal(30));
if(EnumGetRatioFrom.BILL.getCode().equals(from)) {
end = new BigDecimal(revenueArray[1]).divide(new BigDecimal(30), 10, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(dayCount));
}
}else if(EnumMissTimeType.PERIOD.getCode().equals(timeType)){
if(EnumGetRatioFrom.RENT.getCode().equals(from)) {
revenue = revenue.divide(new BigDecimal(period));
}
}

if (revenue.compareTo(end) >= 0){
ratioVo.setRatio(ratio);

@@ -343,7 +362,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
record.setPrice(0l);
}else{
int dayCount = record.getReceivePeriod() * 30;
RatioVo ratioVo = getPayRatio(record.getRevenue(),record.getBusDiscountRatio(),record.getBusDiscountTime(),dayCount);
RatioVo ratioVo = getPayRatio(EnumGetRatioFrom.RENT.getCode(),record.getRevenue(),record.getBusDiscountRatio(),record.getBusDiscountTime(),dayCount,record.getReceivePeriod());
record.setPayRatio(ratioVo.getRatio());
BigDecimal hundred = new BigDecimal(100);
BigDecimal revenue = new BigDecimal(record.getRevenue() == null ? 0 : record.getRevenue()).divide(hundred);
@@ -584,7 +603,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
if(!EnumFromType.SWITCH.getCode().equals(from)){
if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) {
int dayCount = record.getReceivePeriod() * 30;
RatioVo ratioVo = getPayRatio(record.getRevenue(),record.getBusDiscountRatio(),record.getBusDiscountTime(),dayCount);
RatioVo ratioVo = getPayRatio(EnumGetRatioFrom.RENT.getCode(),record.getRevenue(),record.getBusDiscountRatio(),record.getBusDiscountTime(),dayCount,wxRentContract.getReceivePeriod());
record.setPayRatio(ratioVo.getRatio());
BigDecimal hundred = new BigDecimal(100);
BigDecimal revenue = new BigDecimal(record.getRevenue() == null ? 0 : record.getRevenue()).divide(hundred);


Načítá se…
Zrušit
Uložit