|
|
|
@@ -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); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|