Browse Source

Merge branch 'release_toaliyun_real' of https://git.malls.iformall.com/server/formallProject into release_toaliyun_real_legion_activity

release_toaliyun_real
xiaohu 1 year ago
parent
commit
b595e238c0
5 changed files with 51 additions and 11 deletions
  1. +3
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxRentContractRevenueSales.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/mapper/WxRentContractRevenueSalesMapper.java
  3. +2
    -2
      mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java
  4. +41
    -5
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java
  5. +4
    -3
      mallinkService/src/main/resources/mapper/WxRentContractRevenueSalesMapper.xml

+ 3
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxRentContractRevenueSales.java View File

@@ -41,6 +41,9 @@ public class WxRentContractRevenueSales extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value="销售金额",name="maxMoney")
private String saleMoney;
@io.swagger.annotations.ApiModelProperty(value="有效销售金额(免租期扣除掉的)",name="saleMoneyValid")
private String saleMoneyValid;
@io.swagger.annotations.ApiModelProperty(value="计算金额",name="rentMoney")
private String calcuteMoney;


+ 1
- 1
mallinkService/src/main/java/com/iformall/mapper/WxRentContractRevenueSalesMapper.java View File

@@ -16,7 +16,7 @@ public interface WxRentContractRevenueSalesMapper extends CommonMapper<WxRentCon

WxRentContractRevenueSales selectById(@Param("id")Long id,@Param("tenantId")String tenantId);
BigDecimal findSumSalesMoney(WxRentContractRevenueSales wxBillRent);
BigDecimal findSumSalesMoneyValid(WxRentContractRevenueSales wxBillRent);
List<Long> findBillId(WxRentContractRevenueSales wxBillRent);


+ 2
- 2
mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java View File

@@ -373,7 +373,7 @@ public class WxRentContractHelper {
BigDecimal _p = priceD.multiply(new BigDecimal(integers.get(i))).divide(new BigDecimal(100));
priceArrs[i] = _p.setScale(decimalSize, RoundingMode.HALF_UP).toPlainString();
}
}else if (ratioWay.equals(EnumRentContractAdjustRatioWay.FIX_RATIO.getCode())){
}else if (ratioWay.equals(EnumRentContractAdjustRatioWay.FIX_UNIT_PRICE.getCode())){
for (int i = 1; i < size; i++) {
priceArrs[i] = new BigDecimal(integers.get(i)).multiply(new BigDecimal(rentArea)).setScale(decimalSize, RoundingMode.HALF_UP).toPlainString();
}
@@ -661,7 +661,7 @@ public class WxRentContractHelper {
return total.toPlainString();
}
private static List<Date> getValidDays(Date start,Date end,List<Date> freeDays) {
public static List<Date> getValidDays(Date start,Date end,List<Date> freeDays) {
List<Date> allDays = DateUtils.getAllDays(start, end);
if (null == allDays) {
return null;


+ 41
- 5
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java View File

@@ -2600,14 +2600,47 @@ public class WxRentContractServiceImpl implements WxRentContractService {
private BigDecimal[] calcuteReveneuJump(BigDecimal sales,WxRentContract rentcontract,Date startDate,Date endDate,List<Date> freePeriods) {
BigDecimal revenueDecimal = new BigDecimal(0);
BigDecimal rentDecimal = new BigDecimal(0);
//根据免租期来计算
List<Date> validDates = WxRentContractHelper.getValidDays(startDate, endDate, freePeriods);
if (null == validDates || validDates.size() <= 0 ) {
BigDecimal[] bs = new BigDecimal[] {revenueDecimal,rentDecimal,new BigDecimal(0)};
return bs;
}
int allDays = DateUtils.daysBetween(startDate,endDate)+1;
boolean isFull = false;
if (allDays == validDates.size()) {
isFull = true;
}
WxRentContractRevenueJump jq = new WxRentContractRevenueJump();
jq.updateTenantInfo(rentcontract);
jq.setRentContractId(rentcontract.getId());
jq.setSortColumn(" minMoney asc");
BigDecimal revenueDecimal = new BigDecimal(0);
BigDecimal rentDecimal = new BigDecimal(0);
List<WxRentContractRevenueJump> jumpList = wxRentContractRevenueJumpMapper.findList(jq);
if (null != jumpList && jumpList.size() > 0 ) {
//不是满时间段的,要按天来计算
if (!isFull) {
Date realEndStart = DateUtils.getDaySet(endDate, Calendar.SECOND, 1);
int[] diffs = DateUtils.getDiff(startDate, realEndStart);
if (diffs[0] <= 0 ) {
if (rentcontract.getDayPriceCalcute().intValue() == EnumRentDayPriceCalcute.AVERAGE_DAYS.getCode()) {
sales = sales.multiply(new BigDecimal(validDates.size())).divide(new BigDecimal(30),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}else {
sales = sales.multiply(new BigDecimal(validDates.size())).divide(new BigDecimal(allDays),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}
}else {
Date preextraStartDay = DateUtils.getTimeAfterMonths(diffs[0], startDate);
Date extraStartDayMonthEnd = DateUtils.getLastDayForMonth(preextraStartDay);
int predays = DateUtils.daysBetween(preextraStartDay, extraStartDayMonthEnd)+1;
if (rentcontract.getDayPriceCalcute().intValue() == EnumRentDayPriceCalcute.AVERAGE_DAYS.getCode()) {
BigDecimal days = new BigDecimal(diffs[0]).multiply(new BigDecimal(30)).add(new BigDecimal(predays));
sales = sales.multiply(new BigDecimal(validDates.size())).divide(days,Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}else {
sales = sales.multiply(new BigDecimal(validDates.size())).divide(new BigDecimal(allDays),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}
}
}
for (int i = 0 ; i< jumpList.size() ; i ++) {
WxRentContractRevenueJump rj = jumpList.get(i);
String minMoney = rj.getMinMoney();
@@ -2639,7 +2672,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
endDate,0,0,false,rentcontract.getReceivePeriodUnit(),rentcontract.getReceivePeriod());
}
rentDecimal = new BigDecimal(rentNeedpay);
BigDecimal[] bs = new BigDecimal[] {revenueDecimal,rentDecimal};
BigDecimal[] bs = new BigDecimal[] {revenueDecimal,rentDecimal,sales};
return bs;
}
@@ -2756,13 +2789,14 @@ public class WxRentContractServiceImpl implements WxRentContractService {
BigDecimal[] jumppays = calcuteReveneuJump(salesDeciaml, rentcontract,rentBill.getStarttime(), rentBill.getEndtime(),freePeriods);
BigDecimal jumpRevenuePay = jumppays[0];
BigDecimal jumpRentPay = jumppays[1];
BigDecimal saleDecimalValid = jumppays[2];
BigDecimal jumppay = new BigDecimal(0);
if (jumpRevenuePay.compareTo(jumpRentPay) > 0 ) {
jumppay = jumppay.add(jumpRevenuePay);
}else {
jumppay = jumppay.add(jumpRentPay);
}
StringBuffer sb = new StringBuffer();
StringBuffer sb = new StringBuffer("有效销售额:"+saleDecimalValid.toPlainString()+",");
if (jumppay.compareTo(new BigDecimal(needpay)) > 0 ) {
sb.append("跳点规则计算金额:"+jumppay.toPlainString()+",合同租金扣点规则计算金额:"+needpay+".");
needpay = jumppay.toPlainString();
@@ -2778,6 +2812,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
List<WxRentContractRevenueSales> saleList = wxRentContractRevenueSalesMapper.findList(rs);
if (null != saleList && saleList.size() > 0 ) { WxRentContractRevenueSales sale = saleList.get(0);
sale.setSaleMoney(sales);
sale.setSaleMoneyValid(saleDecimalValid.toPlainString());
sale.setUpdateTime(new Date());
wxRentContractRevenueSalesMapper.updateById(sale);
}else {
@@ -2789,6 +2824,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
sale.setRentContractId(rentcontract.getId());
sale.setBillMoney(rentBill.getReceivePay());
sale.setSaleMoney(sales);
sale.setSaleMoneyValid(saleDecimalValid.toPlainString());
sale.setCalcuteMoney(needpay);
sale.setPropertyContractId(propertyContractId);
sale.setCreateTime(new Date());
@@ -3017,7 +3053,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
WxRentContractRevenueSales rsq = new WxRentContractRevenueSales();
rsq.updateTenantInfo(rentcontract);
rsq.setRentContractId(rentcontract.getId());
BigDecimal sum = wxRentContractRevenueSalesMapper.findSumSalesMoney(rsq);
BigDecimal sum = wxRentContractRevenueSalesMapper.findSumSalesMoneyValid(rsq);
if (null == sum || sum.compareTo(new BigDecimal(0)) <= 0 ) {
WxRentContractYearsSumVo vo = new WxRentContractYearsSumVo();
vo.setTotalSales("0");


+ 4
- 3
mallinkService/src/main/resources/mapper/WxRentContractRevenueSalesMapper.xml View File

@@ -12,13 +12,14 @@
<result column="bill_id" jdbcType="BIGINT" property="billId"/>
<result column="bill_money" jdbcType="VARCHAR" property="billMoney"/>
<result column="sale_money" jdbcType="VARCHAR" property="saleMoney"/>
<result column="sale_money_valid" jdbcType="VARCHAR" property="saleMoneyValid"/>
<result column="calcute_money" jdbcType="VARCHAR" property="calcuteMoney"/>
<result column="remark" jdbcType="VARCHAR" property="remark"/>
</resultMap>

<sql id="allColumns">
`id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`rent_contract_id`,`property_contract_id`,`bill_id`,`bill_money`,
`sale_money`,`calcute_money`,`remark`
`sale_money`,`sale_money_valid`,`calcute_money`,`remark`
</sql>

<sql id="dynamicWhereConditions">
@@ -55,8 +56,8 @@
from wx_rent_contract_revenue_sales where id = #{id} and `tenant_id` = #{tenantId}
</select>
<select id="findSumSalesMoney" parameterType="com.iformall.domain.po.WxRentContractRevenueSales" resultType="BigDecimal">
select sum(CAST(sale_money AS DECIMAL(20,2))) receive_pay
<select id="findSumSalesMoneyValid" parameterType="com.iformall.domain.po.WxRentContractRevenueSales" resultType="BigDecimal">
select sum(CAST(ifnull(sale_money_valid,'0') AS DECIMAL(20,2))) receive_pay
from wx_rent_contract_revenue_sales
<include refid="dynamicWhereConditions"/>
</select>


Loading…
Cancel
Save