Quellcode durchsuchen

[BUG][修改][测试环境:业态分析计算问题]

release_toaliyun_real
gongbiao vor 6 Jahren
Ursprung
Commit
d3ecb5498a
2 geänderte Dateien mit 51 neuen und 38 gelöschten Zeilen
  1. +49
    -32
      mallinkService/src/main/java/com/iformall/service/impl/WxBusinessServiceImpl.java
  2. +2
    -6
      mallinkService/src/main/resources/mapper/WxBusinessMapper.xml

+ 49
- 32
mallinkService/src/main/java/com/iformall/service/impl/WxBusinessServiceImpl.java Datei anzeigen

@@ -4,15 +4,14 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.ResultData;
import com.iformall.domain.po.*;
import com.iformall.enums.EnumBusinessFilter;
import com.iformall.enums.EnumIsPreview;
import com.iformall.enums.EnumRentContractStatus;
import com.iformall.enums.*;
import com.iformall.mapper.WxBusinessMapper;
import com.iformall.mapper.WxPropertyContractMapper;
import com.iformall.mapper.WxRentContractMapper;
import com.iformall.service.WxBusinessService;
import com.iformall.service.WxPropertyContractService;
import com.iformall.service.WxRentContractService;
import com.iformall.utils.DateUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -21,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -28,12 +28,12 @@ import java.util.Map;
@Service
public class WxBusinessServiceImpl implements WxBusinessService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
@Autowired
WxBusinessMapper wxBusinessMapper;
@Autowired
@Autowired
private WxRentContractMapper wxRentContractMapper;
@Autowired
@Autowired
private WxRentContractService wxRentContractService;
@Autowired
private WxPropertyContractMapper wxPropertyContractMapper;
@@ -69,14 +69,12 @@ public class WxBusinessServiceImpl implements WxBusinessService {
}

@Override
public List<Map<String,Object>> businessDataList(WxBusiness wxBusiness,Long userid) {
public List<Map<String,Object>> businessDataList(WxBusiness wxBusiness, Long userid) {
//1 得到天数+1
int day = DateUtils.daysBetween(wxBusiness.getStartdate(), wxBusiness.getEnddate()) + 1;
List<Map<String,Object>> resultList = wxBusinessMapper.businessDataList(wxBusiness);
resultList.stream().forEach(e->{
WxBusiness business = new WxBusiness();
business.setId((Integer) e.get("id"));

BigDecimal businessSumMoney = new BigDecimal(0);

WxRentContract query = new WxRentContract();
query.setBusinessId((Integer) e.get("id"));
List<WxRentContract> rentContractList = wxRentContractMapper.select(query);
@@ -90,16 +88,13 @@ public class WxBusinessServiceImpl implements WxBusinessService {
System.out.println("rent rentInfo is null:{}"+dbRent.getId());
continue;
}
logger.info("业态分析>>>>>>>>>>>>>>>>>>租金合同ID:" + dbRent.getId());
List<WxBillRent> previewBill = new ArrayList<>();
WxBillRent preview = new WxBillRent();
preview.setStarttime(dbRent.getRentalStartDate());
preview.setEndtime(dbRent.getRentalEndDate());
previewBill.add(preview);

dbRent.setPreviewBillRentList(previewBill);
List<WxBillRent> billRentList = wxRentContractService.buildRent(new WxMerchant(),userid,dbRent, EnumIsPreview.YES.getCode(), false);
businessSumMoney = businessSumMoney.add(new BigDecimal(billRentList.get(0).getReceivePay()));
Long price = dbRent.getPrice();
Integer priceUnit = dbRent.getPriceUnit();
Integer type = dbRent.getType();
Integer period = dbRent.getReceivePeriod();
Integer busDiscountTime = dbRent.getBusDiscountTime();
BigDecimal priceDecimal = getPriceDecimal(day, price, priceUnit, type, period, busDiscountTime);
businessSumMoney = businessSumMoney.add(priceDecimal);
}

WxPropertyContract pquery = new WxPropertyContract();
@@ -116,15 +111,10 @@ public class WxBusinessServiceImpl implements WxBusinessService {
continue;
}
logger.info("业态分析>>>>>>>>>>>>>>>>>>物业合同ID:" + dbRent.getId());
List<WxBillProperty> previewBill = new ArrayList<>();
WxBillProperty preview = new WxBillProperty();
preview.setStarttime(dbRent.getRentalStartDate());
preview.setEndtime(dbRent.getRentalEndDate());
previewBill.add(preview);

dbRent.setPreviewBillRentList(previewBill);
List<WxBillProperty> billRentList = wxPropertyContractService.buildProperty(new WxMerchant(),userid,dbRent, EnumIsPreview.YES.getCode(), false);
businessSumMoney = businessSumMoney.add(new BigDecimal(billRentList.get(0).getReceivePay()));
Long price = dbRent.getPrice();
Integer priceUnit = dbRent.getPriceUnit();
BigDecimal priceDecimal = getPriceDecimal(day, price, priceUnit, EnumRentContractType.RENT_BY_AREA.getCode(), null, null);
businessSumMoney = businessSumMoney.add(priceDecimal);
}
logger.info("业态分析>>>>>>>>>>>>>>>>>>商铺面积:" + e.get("area").toString());
if (e.get("area") == null || "0".equals(e.get("area").toString()) ||
@@ -141,6 +131,32 @@ public class WxBusinessServiceImpl implements WxBusinessService {
return resultList;
}


/**
* 1按面积 1日(price*day) 2月(price/31*day) 3年(price/365*day)
* 2联营 1年(price/365*day) 2月(price/31*day) 3周期 (price/period/31*day)
* 3取其高 与按面积 相同
*/
public BigDecimal getPriceDecimal(int day, Long price, Integer priceUnit, Integer type, Integer period, Integer busDiscountTime) {
if (EnumRentContractType.RENT_BY_JOINT.getCode().equals(type)) {
if (EnumBusRatioTime.YEAR.getCode().equals(busDiscountTime)) {
return new BigDecimal(price).divide(new BigDecimal(365), 0, RoundingMode.HALF_UP).multiply(new BigDecimal(day));
}
if (EnumBusRatioTime.MONTH.getCode().equals(busDiscountTime)) {
return new BigDecimal(price).divide(new BigDecimal(31), 0, RoundingMode.HALF_UP).multiply(new BigDecimal(day));
}
return new BigDecimal(price).divide(new BigDecimal(31).multiply(new BigDecimal(period)), 0, RoundingMode.HALF_UP).multiply(new BigDecimal(day));
} else {
if (EnumPriceUnit.D.getCode().equals(priceUnit)) {
return new BigDecimal(price).multiply(new BigDecimal(day));
}
if (EnumPriceUnit.M.getCode().equals(priceUnit)) {
return new BigDecimal(price).divide(new BigDecimal(31), 0, RoundingMode.HALF_UP).multiply(new BigDecimal(day));
}
return new BigDecimal(price).divide(new BigDecimal(365), 0, RoundingMode.HALF_UP).multiply(new BigDecimal(day));
}
}

@Override
public ResultData devoteList(WxBusiness wxBusiness, Integer pageNum, Integer pageSize) {
wxBusiness.setLimitStart(0);
@@ -173,5 +189,6 @@ public class WxBusinessServiceImpl implements WxBusinessService {
PageHelper.clearPage();
return new ResultData(pageInfo);
}

}



+ 2
- 6
mallinkService/src/main/resources/mapper/WxBusinessMapper.xml Datei anzeigen

@@ -100,12 +100,8 @@
left join wx_shop ws on(mtd.shop_id = ws.id)
where m.business_id = b.id and m.tenant_id=#{tenantId} and m.status = 1 and m.is_del = 0 )
/100,2) sale,
(select if(sum(ws.operation_area) is null,0,sum(ws.operation_area))
from wx_merchant m
left join wx_merchant_shop mtd on mtd.merchant_id = m.id
left join wx_shop ws on(mtd.shop_id = ws.id)
where m.business_id = b.id and m.tenant_id=#{tenantId} and m.status = 1 and m.is_del = 0 )area,
(select ifnull(sum(rent_area),0) from wx_rent_contract where tenant_id=#{tenantId} and business_id=b.id and status in (2,3,4)) area,
round(
(select if(sum(mtd.trade_amt) is null,0,sum(mtd.trade_amt))


Laden…
Abbrechen
Speichern