diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumChart.java b/mallinkService/src/main/java/com/iformall/enums/EnumChart.java index 8a82405d4..4a8a44888 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumChart.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumChart.java @@ -57,6 +57,7 @@ public enum EnumChart { INDEX_SHOP_RENT(49, "商铺出租数据"), + INDEX_BILL_RECE_RATE(50, "费用收缴数据"), ; public static EnumChart getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillDepositMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillDepositMapper.java index a9280dbf0..dcc37d055 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxBillDepositMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillDepositMapper.java @@ -18,6 +18,10 @@ public interface WxBillDepositMapper extends CommonMapper { Map queryPayInfo(Map params); + Map queryOweInfoAll(Map params); + + Map queryPayInfoAll(Map params); + void updateNotPaidStatus(Map params); void updateWaitPayStatus(Map params); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillOtherMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillOtherMapper.java index d395b88fa..4779434c1 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxBillOtherMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillOtherMapper.java @@ -19,4 +19,7 @@ public interface WxBillOtherMapper extends CommonMapper { List> queryBillList(WxBillOther record); + Map queryPayInfo(Map params); + + Map queryOweInfo(Map params); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillPropertyMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillPropertyMapper.java index 866a4e798..9d824f204 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxBillPropertyMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillPropertyMapper.java @@ -20,6 +20,8 @@ public interface WxBillPropertyMapper extends CommonMapper Map queryPayInfo(Map params); + Map queryOweInfo(Map params); + void updateNotPaidStatus(Map params); void updateWaitPayStatus(Map params); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillRentMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillRentMapper.java index da57cbe32..91f11f8ec 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxBillRentMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillRentMapper.java @@ -18,6 +18,8 @@ public interface WxBillRentMapper extends CommonMapper { Map queryPayInfo(Map params); + Map queryOweInfo(Map params); + void updateNotPaidStatus(Map params); void updateWaitPayStatus(Map params); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java index acd1be369..897dc47cd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java @@ -63,6 +63,12 @@ public class WxChartServiceImpl implements WxChartDataService { WxCouponService wxCouponService; @Autowired WxOrderGroupMapper wxOrderGroupMapper; + @Autowired + WxBillPropertyMapper wxBillPropertyMapper; + @Autowired + WxBillDepositMapper wxBillDepositMapper; + @Autowired + WxBillOtherMapper wxBillOtherMapper; @Override public ResultData queryData(Map paramsMap) { @@ -279,6 +285,11 @@ public class WxChartServiceImpl implements WxChartDataService { return getIndexShopRentData(tenantId, startdate); } + //首页商铺出租数据 + if (chart.equals(EnumChart.INDEX_BILL_RECE_RATE.getCode())) { + return getBillReceRate(tenantId, startdate); + } + return new ResultData(ErrorCode.REPORT_TYPE_UNKNOWN); } @@ -2244,4 +2255,148 @@ public class WxChartServiceImpl implements WxChartDataService { datamap.put("notRentTotalPoint",notRentTotalPoint); return new ResultData(datamap); } + + /** + * 费用收缴数据 + * @param tenantId + * @return + */ + private ResultData getBillReceRate(String tenantId, String startDateStr) { + HashMap datamap = new HashMap<>(); + Date startDate = DateUtils.getDateFromString(startDateStr+"-01","yyyy-MM-dd").getTime(); + Date endDate = DateUtils.getLastDayForMonth(startDate); + + //租金收缴率 + Map params = new HashMap<>(); + params.put("tenantId", tenantId); + params.put("startdate", startDateStr + " 00:00:00"); + params.put("enddate", DateUtils.date2String(endDate,"yyyy-MM-dd") + " 23:59:59"); + Map payinfo = wxBillRentMapper.queryPayInfo(params); + if (payinfo != null) { + BigDecimal receivepay = (BigDecimal) payinfo.get("receivepay"); + BigDecimal pay = (BigDecimal) payinfo.get("pay"); + if (receivepay.doubleValue() > 0) { + BigDecimal divide = pay.divide(receivepay, 2, BigDecimal.ROUND_HALF_UP); + double zjcjl = divide.multiply(new BigDecimal(100)).doubleValue(); + datamap.put("rentysje", receivepay); + datamap.put("rentssje", pay); + datamap.put("rentzjsjl", zjcjl); + } else { + datamap.put("rentysje", 0); + datamap.put("rentssje", 0); + datamap.put("rentzjsjl", 0); + } + } else { + datamap.put("rentysje", 0); + datamap.put("rentssje", 0); + datamap.put("rentzjsjl", 0); + } + + //物业费收缴率 + payinfo = wxBillPropertyMapper.queryPayInfo(params); + if (payinfo != null) { + BigDecimal receivepay = (BigDecimal) payinfo.get("receivepay"); + BigDecimal pay = (BigDecimal) payinfo.get("pay"); + if (receivepay.doubleValue() > 0) { + BigDecimal divide = pay.divide(receivepay, 2, BigDecimal.ROUND_HALF_UP); + double zjcjl = divide.multiply(new BigDecimal(100)).doubleValue(); + datamap.put("propertyysje", receivepay); + datamap.put("propertyssje", pay); + datamap.put("propertyzjsjl", zjcjl); + } else { + datamap.put("propertyysje", 0); + datamap.put("propertyssje", 0); + datamap.put("propertyzjsjl", 0); + } + } else { + datamap.put("propertyysje", 0); + datamap.put("propertyssje", 0); + datamap.put("propertyzjsjl", 0); + } + + //押金收缴率 + payinfo = wxBillDepositMapper.queryPayInfoAll(params); + if (payinfo != null) { + BigDecimal receivepay = (BigDecimal) payinfo.get("receivepay"); + BigDecimal pay = (BigDecimal) payinfo.get("pay"); + if (receivepay.doubleValue() > 0) { + BigDecimal divide = pay.divide(receivepay, 2, BigDecimal.ROUND_HALF_UP); + double zjcjl = divide.multiply(new BigDecimal(100)).doubleValue(); + datamap.put("depositysje", receivepay); + datamap.put("depositssje", pay); + datamap.put("propertyzjsjl", zjcjl); + } else { + datamap.put("depositysje", 0); + datamap.put("depositssje", 0); + datamap.put("depositzjsjl", 0); + } + } else { + datamap.put("depositysje", 0); + datamap.put("depositssje", 0); + datamap.put("depositzjsjl", 0); + } + + //其他费用收缴率 + payinfo = wxBillOtherMapper.queryPayInfo(params); + if (payinfo != null) { + BigDecimal receivepay = (BigDecimal) payinfo.get("receivepay"); + BigDecimal pay = (BigDecimal) payinfo.get("pay"); + if (receivepay.doubleValue() > 0) { + BigDecimal divide = pay.divide(receivepay, 2, BigDecimal.ROUND_HALF_UP); + double zjcjl = divide.multiply(new BigDecimal(100)).doubleValue(); + datamap.put("otherysje", receivepay); + datamap.put("otherssje", pay); + datamap.put("otherzjsjl", zjcjl); + } else { + datamap.put("otherysje", 0); + datamap.put("otherssje", 0); + datamap.put("otherzjsjl", 0); + } + } else { + datamap.put("otherysje", 0); + datamap.put("otheryssje", 0); + datamap.put("otherzjsjl", 0); + } + + //欠缴数据 + BigDecimal totalOwe = new BigDecimal(0); + payinfo = wxBillRentMapper.queryOweInfo(params); + if (payinfo != null) { + BigDecimal owe = (BigDecimal) payinfo.get("owe"); + totalOwe.add(owe); + datamap.put("rentOwe", owe); + } else { + datamap.put("rentOwe", 0); + } + + payinfo = wxBillPropertyMapper.queryOweInfo(params); + if (payinfo != null) { + BigDecimal owe = (BigDecimal) payinfo.get("owe"); + totalOwe.add(owe); + datamap.put("propertyOwe", owe); + } else { + datamap.put("propertyOwe", 0); + } + + payinfo = wxBillOtherMapper.queryOweInfo(params); + if (payinfo != null) { + BigDecimal owe = (BigDecimal) payinfo.get("owe"); + totalOwe.add(owe); + datamap.put("otherOwe", owe); + } else { + datamap.put("otherOwe", 0); + } + + payinfo = wxBillDepositMapper.queryOweInfoAll(params); + if (payinfo != null) { + BigDecimal owe = (BigDecimal) payinfo.get("owe"); + totalOwe.add(owe); + datamap.put("depositOwe", owe); + } else { + datamap.put("depositOwe", 0); + } + datamap.put("totalOwe", totalOwe); + + return new ResultData(datamap); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java index bb8582d21..6ad96de44 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -610,18 +610,31 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService instance.setTime(firstDay); //最后一期有余,加上残月,(不整除时,最后一个月有余,否则为0) if(receivePeriod > 1) { - instance.add(dayType, extralease); + if(isLastYesr) { + instance.add(dayType, extralease); + }else{ + instance.add(dayType, receivePeriod); + } + } + if(isLastYesr) { + instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1); } - instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt-1); instance.add(Calendar.DAY_OF_MONTH, -1); wxBillProperty.setEndtime(instance.getTime()); + //逻辑同计算endtime double needPayDouble = 0; double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxBillProperty.getEndtime()); if(receivePeriod > 1) { - needPayDouble += price * extralease; + if(isLastYesr) { + needPayDouble += price * extralease; + }else{ + needPayDouble += price * receivePeriod; + } + } + if(isLastYesr) { + needPayDouble += oneDayProce * endDateInt; } - needPayDouble += oneDayProce * endDateInt; DecimalFormat format = new DecimalFormat("0"); needpay = Integer.parseInt(format.format(needPayDouble)); //分做四舍五入 } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index 478656af4..a77bbaeb6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -945,18 +945,31 @@ public class WxRentContractServiceImpl implements WxRentContractService { instance.setTime(firstDay); //最后一期有余,加上残月,(不整除时,最后一个月有余,否则为0) if(receivePeriod > 1) { - instance.add(dayType, extralease); + if(isLastYesr) { + instance.add(dayType, extralease); + }else{ + instance.add(dayType, receivePeriod); + } + } + if(isLastYesr) { + instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1); } - instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt-1); instance.add(Calendar.DAY_OF_MONTH, -1); wxBillRent.setEndtime(instance.getTime()); + //逻辑同计算endtime double needPayDouble = 0; double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxBillRent.getEndtime()); if(receivePeriod > 1) { - needPayDouble += price * extralease; + if(isLastYesr) { + needPayDouble += price * extralease; + }else{ + needPayDouble += price * receivePeriod; + } + } + if(isLastYesr) { + needPayDouble += oneDayProce * endDateInt; } - needPayDouble += oneDayProce * endDateInt; DecimalFormat format = new DecimalFormat("0"); needpay = Integer.parseInt(format.format(needPayDouble)); //分做四舍五入 } diff --git a/mallinkService/src/main/resources/mapper/WxBillDepositMapper.xml b/mallinkService/src/main/resources/mapper/WxBillDepositMapper.xml index fdfcd4648..db2fd30fe 100644 --- a/mallinkService/src/main/resources/mapper/WxBillDepositMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillDepositMapper.xml @@ -96,7 +96,38 @@ where tenant_id=#{tenantId} and date_format(receive_date,'%Y-%m')=#{receiveDate} group by tenant_id - + + + + + update wx_bill_rent_deposit set status=#{notPaid},expired_day=DATEDIFF(now(),receive_date) where tenant_id=#{tenantId} and status!=#{paid} and status!=5 and DATEDIFF(now(),receive_date)>0 diff --git a/mallinkService/src/main/resources/mapper/WxBillOtherMapper.xml b/mallinkService/src/main/resources/mapper/WxBillOtherMapper.xml index d1f40b1fd..bcfaaffef 100644 --- a/mallinkService/src/main/resources/mapper/WxBillOtherMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillOtherMapper.xml @@ -96,9 +96,19 @@ update wx_bill_other set status=#{waitPay} where tenant_id=#{tenantId} and status!=#{paid} and DATEDIFF(now(),receive_date) <=0 - - - - + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml b/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml index 268baaa14..5410dd626 100644 --- a/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml @@ -117,6 +117,12 @@ where tenant_id=#{tenantId} and date_format(receive_date,'%Y-%m')=#{receiveDate} and is_preview = 0 group by tenant_id + + update wx_bill_property set status=#{notPaid},expired_day=DATEDIFF(now(),receive_date) diff --git a/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml index 0f68c1830..8843a1d27 100644 --- a/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml @@ -121,6 +121,12 @@ where tenant_id=#{tenantId} and receive_date between #{startdate} and #{enddate} and is_preview = 0 group by tenant_id + + update wx_bill_rent set status=#{notPaid},expired_day=DATEDIFF(now(),receive_date) @@ -161,4 +167,6 @@ and br.status = 1 and c.id = #{contractId} + +