From 7e92ee32aa8afa835b6a0588d46f558996bd3e61 Mon Sep 17 00:00:00 2001 From: hupeng Date: Thu, 8 Nov 2018 18:34:57 +0800 Subject: [PATCH] =?UTF-8?q?[M=E7=AB=AF][=E6=96=B0=E5=A2=9E]:=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=A7=BB=E5=8A=A8=E7=AB=AF=E9=A6=96=E9=A1=B5=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DataTowerController.java | 9 + .../mapper/WxCouponChannelMapper.java | 2 + .../iformall/mapper/WxCouponOrderMapper.java | 10 + .../iformall/service/DataTowerService.java | 2 + .../service/impl/DataTowerServiceImpl.java | 198 +++++++++++++++++- .../impl/WxMerchantTradeDailyServiceImpl.java | 3 +- .../mapper/WxCouponChannelMapper.xml | 5 + .../resources/mapper/WxCouponOrderMapper.xml | 15 ++ 8 files changed, 239 insertions(+), 5 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/DataTowerController.java b/mallinkAdmin/src/main/java/com/iformall/controller/DataTowerController.java index 0a6a9c1a8..c16197e22 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/DataTowerController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/DataTowerController.java @@ -23,6 +23,15 @@ public class DataTowerController extends BaseController { @Autowired private DataTowerService dataTowerService; + @ApiOperation("查询运营") + @PostMapping("/queryRunningMobile") + public ResultData queryRunningMobile() { + + Map data = dataTowerService.queryRunningMobile(getTenantId()); + + return new ResultData(data); + } + @ApiOperation("查询运营") @PostMapping("/queryRunning") diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java index 45bfdeca6..d519cf5dd 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponChannelMapper.java @@ -9,6 +9,8 @@ public interface WxCouponChannelMapper extends CommonMapper findList(WxCouponChannel wxCouponChannel); + int countCoupon(WxCouponChannel wxCouponChannel); + List findVoList(WxCouponChannel wxCouponChannel); List findVoListForCouponChannel2(WxCouponChannel wxCouponChannel); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index 0a61aac5f..c68f6a5fc 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -82,4 +82,14 @@ public interface WxCouponOrderMapper extends CommonMapper { int findOrderedCountForCUser(@Param("cUserId")Long cUserId,@Param("startTime") Date startTime,@Param("endTime")Date endTime); int findVerifiedCountForCUser(@Param("cUserId")Long cUserId,@Param("startTime") Date startTime,@Param("endTime")Date endTime); + /** + * 查询核销/领券数 + * @param cUserId + * @param startTime + * @param endTime + * @return + */ + int findOrderedCount(@Param("tenantId")String tenantId, @Param("startTime") Date startTime,@Param("endTime")Date endTime); + int findVerifiedCount(@Param("tenantId")String tenantId, @Param("startTime") Date startTime,@Param("endTime")Date endTime); + } diff --git a/mallinkService/src/main/java/com/iformall/service/DataTowerService.java b/mallinkService/src/main/java/com/iformall/service/DataTowerService.java index c7a2a79a0..e8dcd995c 100644 --- a/mallinkService/src/main/java/com/iformall/service/DataTowerService.java +++ b/mallinkService/src/main/java/com/iformall/service/DataTowerService.java @@ -5,6 +5,8 @@ import java.util.Map; public interface DataTowerService { + Map queryRunningMobile(String tenantId); + Map queryRunning(String tenantId); Map queryCar(String tenantId); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java index 20bfc0699..65e40854f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/DataTowerServiceImpl.java @@ -1,11 +1,10 @@ package com.iformall.service.impl; import com.alibaba.fastjson.JSONObject; -import com.iformall.domain.po.WxMall; -import com.iformall.domain.po.WxMerchant; -import com.iformall.domain.po.WxMerchantTradeDaily; -import com.iformall.domain.po.WxShop; +import com.iformall.domain.po.*; import com.iformall.enums.EnumCarCmd; +import com.iformall.enums.EnumCouponChannelStatus; +import com.iformall.enums.EnumMerchantStatus; import com.iformall.enums.EnumShopStatus; import com.iformall.mapper.*; import com.iformall.service.DataTowerService; @@ -53,6 +52,197 @@ public class DataTowerServiceImpl implements DataTowerService { WxBillRentMapper wxBillRentMapper; + @Autowired + WxCouponOrderMapper wxCouponOrderMapper; + + @Autowired + WxCouponChannelMapper wxCouponChannelMapper; + @Override + public Map queryRunningMobile(String tenantId) { + WxShop wxShop = new WxShop(); + wxShop.setTenantId(tenantId); + wxShop.setStatus(EnumShopStatus.RENT.getCode()); + List rentedList = wxShopMapper.findList(wxShop); + wxShop.setStatus(EnumShopStatus.NOT_RENT.getCode()); + List unrentedList = wxShopMapper.findList(wxShop); + + HashMap dataMap = new HashMap<>(); + + //出租与未出租*********************************************** + HashMap shopMap = new HashMap<>(); + int rentedCount = rentedList.size(); + int unrentedCount = unrentedList.size(); + int total = rentedCount + unrentedCount; + if (total == 0) { + shopMap.put("rentedCount", 0); + shopMap.put("unrentedCount", 0); + shopMap.put("rentedPercent", "--"); + shopMap.put("unrentedPercent", "--"); + } else { + shopMap.put("rentedCount", rentedCount); + shopMap.put("unrentedCount", unrentedCount); + double rentedPercent = new BigDecimal(((double) rentedCount / total) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + double unrentedPercent = new BigDecimal(((double) unrentedCount / total) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + shopMap.put("rentedPercent", rentedPercent + "%"); + shopMap.put("unrentedPercent", unrentedPercent + "%"); + } + + dataMap.put("shop",shopMap); + + //租金*********************************************** + HashMap rentMap = new HashMap<>(); + Map params = new HashMap<>(); + params.put("tenantId", tenantId); + Calendar calendar = Calendar.getInstance();//日历对象 + calendar.setTime(new Date());//设置当前日期 + calendar.add(Calendar.MONTH, -1);//月份减一 + params.put("receiveDate", DateUtils.date2String(calendar.getTime(), "yyyy-MM")); + Map payinfo = wxBillRentMapper.queryPayInfo(params); + if (payinfo != null) { + BigDecimal receivableAmount = (BigDecimal) payinfo.get("receivepay"); + BigDecimal receivedAmount = (BigDecimal) payinfo.get("pay"); + if (receivableAmount.longValue() > 0) { + BigDecimal divide = receivedAmount.divide(receivableAmount, 2, BigDecimal.ROUND_HALF_UP); + double receivedPercent = divide.multiply(new BigDecimal(100)).doubleValue(); + rentMap.put("receivedPercent", receivedPercent + "%"); + } else { + rentMap.put("receivedPercent", "--"); + } + rentMap.put("receivableAmount", receivableAmount.longValue()); + rentMap.put("receivedAmount", receivedAmount.longValue()); + rentMap.put("arrearsAmount", receivableAmount.subtract(receivedAmount).longValue()); + } else { + rentMap.put("receivableAmount", 0); + rentMap.put("receivedAmount", 0); + rentMap.put("arrearsAmount", 0); + rentMap.put("receivedPercent", "--"); + } + + dataMap.put("rent",rentMap); + + //上报*********************************************** + HashMap reportMap = new HashMap<>(); + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant.setTenantId(tenantId); + wxMerchant.setStatus(EnumMerchantStatus.VALID.getCode()); + List merchants = wxMerchantMapper.findList(wxMerchant); + + WxMerchantTradeDaily wxMerchantTradeDaily = new WxMerchantTradeDaily(); + wxMerchantTradeDaily.setTenantId(tenantId); + String reportDate = DateUtils.getTimeBefore(1, new Date()); + wxMerchantTradeDaily.setReportDate(reportDate); + List tradeList = wxMerchantTradeDailyMapper.findList(wxMerchantTradeDaily); + int merchantCount = merchants.size(); + int tradeCount = tradeList.size(); + if (merchantCount > 0 && tradeCount > 0) { + double reportPercent = new BigDecimal(((double) tradeCount / merchantCount) * 100).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + reportMap.put("reportPercent", reportPercent + "%"); + } else { + reportMap.put("reportPercent", "--"); + } + reportMap.put("reportCount", tradeCount); + reportMap.put("silenceCount", merchantCount - tradeCount); + int reportTotal = tradeList.stream().mapToInt(WxMerchantTradeDaily::getTradeAmt).sum(); + reportMap.put("reportTotal", reportTotal); + + dataMap.put("report",reportMap); + + + + //今日车流量*********************************************** + HashMap carMap = new HashMap<>(); + HashMap paramsCar = new HashMap<>(); + paramsCar.put("tenantId", tenantId); + paramsCar.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); + String startdate = DateUtils.getTimeBefore(30, new Date()); + String systemTime = DateUtils.getSystemTime("yyyy-MM-dd"); + + List tjTimeList = DateUtils.getTjTimeList(startdate, systemTime, "0"); + + paramsCar.put("startdate", startdate + " 00:00:00"); + paramsCar.put("enddate", systemTime + " 23:59:59"); + + List> historylist = wxCarCmdLogMapper.queryHistory(paramsCar); + + Map collect = historylist.stream().collect(Collectors.toMap(m -> { + return m.get("create_date"); + }, m -> { + return m.get("carcount"); + })); + + TreeMap historymap = new TreeMap<>(); + for (String date : tjTimeList) { + Object o = collect.get(date); + if (o == null) { + historymap.put(date.substring(5).replace("-", "/"), 0L); + } else { + historymap.put(date.substring(5).replace("-", "/"), o); + } + } + + long todaycar = (long) historymap.get(DateUtils.getSystemTime("MM/dd")); + carMap.put("carCount", todaycar); + + //环比 + long yesterdaycar = (long) historymap.get(tjTimeList.get(8 - 2).substring(5).replace("-", "/")); + if (yesterdaycar > 0) { + double hbd = (double) (todaycar - yesterdaycar) / yesterdaycar * 100; + double hb = new BigDecimal(hbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + carMap.put("increasedPercent", hb); + } else { + carMap.put("increasedPercent", "--"); + } + + //上周同期 + long last = (long) historymap.get(tjTimeList.get(0).substring(5).replace("-", "/")); + if (last > 0) { + double lasthbd = (double) (todaycar - last) / last * 100; + double lasthb = new BigDecimal(lasthbd).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); + carMap.put("increasedPercentWeek", lasthb); + } else { + carMap.put("increasedPercentWeek", "--"); + } + + dataMap.put("car",carMap); + + + //今日券数据*********************************************** + HashMap couponMap = new HashMap<>(); + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date()); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + Date startTime = cal.getTime(); + cal.add(Calendar.DAY_OF_YEAR, 1); + Date endTime = cal.getTime(); + + long verifiedCount = wxCouponOrderMapper.findVerifiedCount(tenantId,startTime,endTime); + long orderedCount = wxCouponOrderMapper.findOrderedCount(tenantId,startTime,endTime); + couponMap.put("verifiedCount", verifiedCount); + couponMap.put("orderedCount", orderedCount); + WxCouponChannel wxCouponChannel = new WxCouponChannel(); + wxCouponChannel.setTenantId(tenantId); + wxCouponChannel.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); + long couponCount = wxCouponChannelMapper.countCoupon(wxCouponChannel); + couponMap.put("couponCount", couponCount); + + dataMap.put("coupon",couponMap); + + + + //客流*********************************************** + HashMap visitorMap = new HashMap<>(); + visitorMap.put("todayCount", 8888); + visitorMap.put("increasedPercent", "5%"); + visitorMap.put("increasedPercentWeek", "5%"); + dataMap.put("visitor",visitorMap); + + + return dataMap; + } + @Override public Map queryRunning(String tenantId) { WxShop wxShop = new WxShop(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java index b610befca..ff57ec903 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java @@ -157,7 +157,7 @@ public class WxMerchantTradeDailyServiceImpl implements WxMerchantTradeDailyServ tradeList.add(trade); } } - + Collections.reverse(tradeList); return new ResultData(tradeList); } @@ -190,6 +190,7 @@ public class WxMerchantTradeDailyServiceImpl implements WxMerchantTradeDailyServ } } + Collections.reverse(tradeList); return new ResultData(tradeList); } diff --git a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml index 350aa5520..749ab7ec5 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponChannelMapper.xml @@ -214,6 +214,11 @@ + + update wx_coupon_channel SET status = 1, update_date = now() where status = 0 and end_time < now() diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 2f9c9a8bb..4883aa05d 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -570,4 +570,19 @@ and create_date <= #{endTime} + + + + \ No newline at end of file