Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile
| | |
| | | * @return |
| | | */ |
| | | @PostMapping("/t-app-user-integral-change/addAppUserIntegralChange") |
| | | R addAppUserIntegralChange(@RequestBody TAppUserIntegralChange appUserIntegralChange); |
| | | R addAppUserIntegralChange(TAppUserIntegralChange appUserIntegralChange); |
| | | |
| | | |
| | | /** |
| | |
| | | @GetMapping(value = "/user/points/detail") |
| | | public R<TAppUserIntegralChange> pointsDetail(String id) { |
| | | TAppUserIntegralChange byId = integralChangeService.getById(id); |
| | | if (byId.getChangeType()==6) { |
| | | TExchangeOrder data = exchangeOrderClient.orderDetail(Long.valueOf(byId.getExtension())).getData(); |
| | | if (data!=null) { |
| | | byId.setGoodType(data.getOrderType()); |
| | | } |
| | | } |
| | | return R.ok(byId); |
| | | } |
| | | |
| | |
| | | @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"}) |
| | | public R<TParkLotRecordCountVo> work(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){ |
| | | List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()) |
| | | .between(TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime(), parkingRecordQueryDto.getEndTime()).list(); |
| | | .ge(parkingRecordQueryDto.getStartTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime()) |
| | | .le(parkingRecordQueryDto.getEndTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getEndTime().plusDays(1)).list(); |
| | | int count1 = list.size(); |
| | | //统计出list中chargingOrderId为null的数据个数 |
| | | int count2 = list.stream().filter(item -> item.getChargingOrderId() == null).collect(Collectors.toList()).size(); |
| | | int count3 = count1-count2; |
| | | int count2 = list.stream().filter(item -> item.getChargingOrderId() != null).collect(Collectors.toList()).size(); |
| | | int count3 = list.stream().filter(item -> item.getOutParkingType() == 2).collect(Collectors.toList()).size(); |
| | | //计算出list中parkingDuration的总和 |
| | | int count4 = 0; |
| | | for (TParkingRecord tParkingRecord : list) { |
| | |
| | | @PostMapping(value = "/parking/work1") |
| | | @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"}) |
| | | public R<TParkLotRecordCountVo> work1(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){ |
| | | List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()) |
| | | .between(TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime(), parkingRecordQueryDto.getEndTime()).list(); |
| | | List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()).list(); |
| | | int count1 = list.size(); |
| | | //统计出list中chargingOrderId为null的数据个数 |
| | | int count2 = list.stream().filter(item -> item.getChargingOrderId() == null).collect(Collectors.toList()).size(); |
| | |
| | | tChargingGunVO.setAuthUpdate(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.CHARGING_GUN_UPDATE)); |
| | | tChargingGunVO.setAuthViewRates(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.CHARGING_GUN_VIEW_RATES)); |
| | | if(null == tChargingGunVO.getAccountingStrategyId()){ |
| | | Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGunVO.getSiteId())).getData().get(0); |
| | | List<Site> data = siteClient.getSiteByIds(Arrays.asList(tChargingGunVO.getSiteId())).getData(); |
| | | if(data.size() > 0){ |
| | | Site site = data.get(0); |
| | | tChargingGunVO.setAccountingStrategyId(site.getAccountingStrategyId()); |
| | | } |
| | | } |
| | | } |
| | | pageInfo.setRecords(list); |
| | | return pageInfo; |
| | | } |
| | |
| | | ChargeMonitoring chargeMonitoring = new ChargeMonitoring(); |
| | | chargeMonitoring.setPhone(sites.size() == 1 ? sites.get(0).getPhone() : ""); |
| | | chargeMonitoring.setAddress(sites.size() == 1 ? sites.get(0).getAddress() : ""); |
| | | chargeMonitoring.setTerminalTotal(sites.size()); |
| | | chargeMonitoring.setTerminalTotal(total.size()); |
| | | chargeMonitoring.setCharging(charging.size()); |
| | | chargeMonitoring.setNotCharged(total.size() - charging.size()); |
| | | chargeMonitoring.setRatedPower(ratedPower.setScale(4, RoundingMode.HALF_EVEN)); |
| | |
| | | IFNULL(COUNT(charge_mode),0) AS modeCount |
| | | FROM t_charging_gun |
| | | WHERE del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} |
| | | AND charging_pile_id in ( |
| | | select id from `charging_pile_service`.`t_charging_pile` where del_flag = 0 |
| | | ) |
| | | <if test="siteIds != null and siteIds.size()>0"> |
| | | AND site_id IN |
| | | <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> |
| | |
| | | <select id="getStatusModeStatistics" resultType="com.ruoyi.chargingPile.api.vo.StatusModeStatisticsVO"> |
| | | SELECT |
| | | charge_mode, |
| | | IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 2),0) AS freeCount, |
| | | IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 5),0) AS filledCount, |
| | | IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 3),0) AS insertCount, |
| | | IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 4),0) AS chargingCount |
| | | IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 2 AND charge_mode = #{chargeMode}),0) AS freeCount, |
| | | IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 5 AND charge_mode = #{chargeMode}),0) AS filledCount, |
| | | IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 3 AND charge_mode = #{chargeMode}),0) AS insertCount, |
| | | IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 4 AND charge_mode = #{chargeMode}),0) AS chargingCount |
| | | FROM t_charging_gun |
| | | WHERE del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} AND charge_mode = #{chargeMode} |
| | | AND charging_pile_id in ( |
| | | select id from `charging_pile_service`.`t_charging_pile` where del_flag = 0 |
| | | ) |
| | | <if test="siteIds != null and siteIds.size()>0"> |
| | | AND site_id IN |
| | | <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> |
| | |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.dto.ChargingOrderGroup; |
| | | import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; |
| | | import com.ruoyi.common.core.web.domain.BasePojo; |
| | | import com.ruoyi.common.redis.service.RedisService; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | | import com.ruoyi.common.core.web.domain.AjaxResult; |
| | |
| | | } |
| | | |
| | | @ResponseBody |
| | | @PostMapping(value = "/chargingOrderInfo") |
| | | @GetMapping(value = "/chargingOrderInfo") |
| | | @ApiOperation(value = "充电桩订单列表查看详情", tags = {"管理后台-订单管理"}) |
| | | public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String strategyId) { |
| | | TChargingOrder byId = chargingOrderService.getById(strategyId); |
| | |
| | | } |
| | | List<TChargingOrder> list = chargingOrderService.lambdaQuery().ge(TChargingOrder::getStartTime, start).le(TChargingOrder::getEndTime, end).in(TChargingOrder::getSiteId, siteIds).list(); |
| | | List<Long> chargingOrderIds = list.stream().map(TChargingOrder::getId).collect(Collectors.toList()); |
| | | chargingOrderIds.add(-1L); |
| | | //上方饼图 |
| | | List<Map<String,Object>> maps = chargingOrderService.getSumByType(chargingOrderIds); |
| | | |
| | |
| | | tCharingUserMapVO.setMap(dateRangeStatistics); |
| | | |
| | | |
| | | List<Map<String,Object>> map1 = chargingOrderService.usersByQuery(statisticsQueryDto); |
| | | List<Map<String,Object>> map1 = chargingOrderService.usersByQuery1(statisticsQueryDto); |
| | | |
| | | |
| | | |
| | | LocalDate startDate1 = statisticsQueryDto.getStartTime(); |
| | | LocalDate endDate1 = statisticsQueryDto.getEndTime(); |
| | | |
| | | List<Map<String, Object>> dateRangeStatistics1 = new ArrayList<>(); |
| | | |
| | | // 遍历日期范围 |
| | | while (!startDate.isAfter(endDate)) { |
| | | String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); |
| | | while (!startDate1.isAfter(endDate1)) { |
| | | String formattedDate = startDate1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); |
| | | Map<String, Object> dailyStats = findMapWithDateValue(map1, formattedDate); |
| | | |
| | | if (dailyStats != null) { |
| | |
| | | } |
| | | |
| | | // 移动到下一天 |
| | | startDate = startDate.plusDays(1); |
| | | startDate1 = startDate1.plusDays(1); |
| | | } |
| | | |
| | | tCharingUserMapVO.setMap1(dateRangeStatistics1); |
| | |
| | | } else { |
| | | siteIds.add(statisticsQueryDto.getSiteId()); |
| | | } |
| | | List<TChargingOrder> list = chargingOrderService.lambdaQuery().in(!siteIds.isEmpty(), TChargingOrder::getSiteId, siteIds).eq(statisticsQueryDto.getSiteId() != null, TChargingOrder::getSiteId, statisticsQueryDto.getSiteId()).list(); |
| | | LocalDateTime selectDate = statisticsQueryDto.getSelectDate(); |
| | | LocalDateTime min = selectDate.MIN; |
| | | LocalDateTime max = selectDate.MAX; |
| | | List<TChargingOrder> list = chargingOrderService.lambdaQuery().in(!siteIds.isEmpty(), TChargingOrder::getSiteId, siteIds).ge( TChargingOrder::getCreateTime,min).le(BasePojo::getCreateTime,max).eq(statisticsQueryDto.getSiteId() != null, TChargingOrder::getSiteId, statisticsQueryDto.getSiteId()).list(); |
| | | //当日的订单总数 |
| | | int size = list.size(); |
| | | //计算list中paymentAmount的总和 |
| | |
| | | import com.ruoyi.account.api.model.TAppUser; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.web.domain.AjaxResult; |
| | | import com.ruoyi.common.core.web.domain.BasePojo; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | | import com.ruoyi.common.security.utils.SecurityUtils; |
| | |
| | | .like(manageOrderAppealQuery.getCode() != null, TOrderAppeal::getCode, manageOrderAppealQuery.getCode()) |
| | | .like(manageOrderAppealQuery.getPhone() != null, TOrderAppeal::getPhone, manageOrderAppealQuery.getPhone()) |
| | | .eq(manageOrderAppealQuery.getOrderType() != null, TOrderAppeal::getOrderType, manageOrderAppealQuery.getOrderType()) |
| | | .in(TOrderAppeal::getOrderType, 1, 2).page(Page.of(manageOrderAppealQuery.getPageCurr(), manageOrderAppealQuery.getPageSize())); |
| | | .in(TOrderAppeal::getOrderType, 1, 2) |
| | | .orderByDesc(TOrderAppeal::getFeedbackTime) |
| | | .page(Page.of(manageOrderAppealQuery.getPageCurr(), manageOrderAppealQuery.getPageSize())); |
| | | |
| | | for (TOrderAppeal record : page.getRecords()) { |
| | | record.setUid(record.getId().toString()); |
| | |
| | | package com.ruoyi.order.dto; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | public class ChargingStatisticsQueryDto { |
| | |
| | | @ApiModelProperty("结束时间") |
| | | private LocalDate endTime; |
| | | @ApiModelProperty("工作台用查询参数") |
| | | private LocalDate selectDate; |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private LocalDateTime selectDate; |
| | | } |
| | |
| | | } |
| | | BigDecimal add = tChargingOrder.getElectrovalence().add(tChargingOrder.getServiceCharge()); |
| | | tChargingOrder.setTotalAmount(add.toString()); |
| | | tChargingOrder.setDiscount(tChargingOrder.getCouponDiscountAmount().toString()); |
| | | tChargingOrder.setDiscount(tChargingOrder.getCouponDiscountAmount()!=null?tChargingOrder.getCouponDiscountAmount().toString():"0"); |
| | | UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(tChargingOrder.getCode()).getData(); |
| | | if (data5!=null){ |
| | | if (data5.getTime_remaining()!=null){ |
| | | chargingSecond+=data5.getTime_remaining()*60; |
| | | } |
| | | } |
| | | Integer cumulativeChargingTime = data5.getCumulative_charging_time(); |
| | | // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟 |
| | |
| | | tChargingOrder.setChargingTime(result.toString()); |
| | | } |
| | | tChargingOrder.setEndSoc(data5.getSoc().toString()); |
| | | } |
| | | TAppUser data3 = appUserClient.getUserById(tChargingOrder.getAppUserId()).getData(); |
| | | if (tChargingOrder.getAppUserCarId()!=null){ |
| | | List<TAppUserCar> data4 = appUserCarClient.getCarByIds(Arrays.asList(tChargingOrder.getAppUserCarId())).getData(); |
| | |
| | | electrovalence = electrovalence.add(tChargingOrder.getElectrovalence()); |
| | | electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence()); |
| | | } |
| | | if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() == 2){ |
| | | if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() !=null && tChargingOrder.getRefundStatus() == 2){ |
| | | refundAmount = refundAmount.add(tChargingOrder.getRefundAmount()); |
| | | } |
| | | // 累加累计服务费 |
| | |
| | | // @Scheduled(cron = "0 0 0 2 * ?") |
| | | // 每天凌晨12点执行的定时任务 |
| | | |
| | | |
| | | // @Scheduled(cron = "0 0 12 * * ?") |
| | | @Scheduled(cron = "0 0 12 2 * ?") |
| | | // 每30秒执行一次的定时任务 |
| | | @Scheduled(cron = "0/30 * * * * ?") |
| | | public void taskMonth() { |
| | | try { |
| | | System.err.println("执行定时任务生成账单"); |
| | | // 获取上个月的开始和结束日期 |
| | | LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1). |
| | | withDayOfMonth(2); |
| | |
| | | .collect(Collectors.joining()); // 将其连接成一个字符串 |
| | | tChargingBill.setCode("JSD"+string+randomDigits ); |
| | | tChargingBill.setType(1); |
| | | tChargingBill.setSiteId(0); |
| | | tChargingBill.setBillTime(LocalDateTime.now()); |
| | | tChargingBill.setStatus(1); |
| | | tChargingBill.setOrderState(2); |
| | |
| | | // 每月二号给每个站点生成上月账单 |
| | | List<Integer> collect = siteClient.getSiteAll().getData().stream().map(Site::getId).collect(Collectors.toList()); |
| | | List<TChargingBill> tChargingBills = new ArrayList<>(); |
| | | for (int i = 1; i <= collect.size(); i++) { |
| | | for (int i = 0; i < collect.size(); i++) { |
| | | TChargingBill tChargingBill1 = new TChargingBill(); |
| | | Random random1 = new Random(); |
| | | String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9 |
| | | .mapToObj(String::valueOf) |
| | | .collect(Collectors.joining()); // 将其连接成一个字符串 |
| | | tChargingBill1.setCode("JSD"+string+randomDigits1+i ); |
| | | tChargingBill1.setCode("JSD"+string+randomDigits1+(i+1) ); |
| | | tChargingBill1.setType(2); |
| | | tChargingBill1.setSiteId(collect.get(i)); |
| | | tChargingBill1.setBillTime(LocalDateTime.now()); |
| | |
| | | tChargingBill1.setOrderState(2); |
| | | tChargingBills.add(tChargingBill1); |
| | | } |
| | | System.err.println("列表"+tChargingBills); |
| | | if (!tChargingBills.isEmpty())chargingBillService.saveBatch(tChargingBills); |
| | | |
| | | } catch (Exception e) { |
| | |
| | | <if test="endTime1 != null and endTime1!=''"> |
| | | and (t1.end_time between #{endTime1} and #{endTime2}) |
| | | </if> |
| | | and t1.del_flag = 0 |
| | | </select> |
| | | <select id="payOrderQuery" resultType="com.ruoyi.order.dto.PayOrderDto"> |
| | | SELECT o.*,i.phone FROM (SELECT |
| | |
| | | LEFT JOIN `charging_pile_account`.`t_app_user` i on o.app_user_id = i.id |
| | | <where> |
| | | o.del_flag = 0 |
| | | |
| | | <if test="data.code != null and data.code != ''"> |
| | | AND o.code LIKE CONCAT('%',#{data.code},'%') |
| | | </if> |
| | |
| | | SELECT |
| | | count(1) as counts,vehicle_use |
| | | from charging_pile_account.t_app_user_car |
| | | where del_flag = 0 |
| | | GROUP BY vehicle_use |
| | | </select> |
| | | <select id="carUserBrand" resultType="java.util.Map"> |
| | |
| | | SELECT |
| | | count(1) as counts,vehicle_brand |
| | | from charging_pile_account.t_app_user_car |
| | | where del_flag = 0 |
| | | GROUP BY vehicle_brand |
| | | </select> |
| | | <select id="countLocalCar" resultType="java.util.Map"> |
| | |
| | | if (goodType==1){ |
| | | TGoods byId = goodsService.getById(id); |
| | | if (byId==null||byId.getStatus()==2){ |
| | | return R.fail(2,"内容不存在"); |
| | | return R.fail(2,"该商品已不存在"); |
| | | } |
| | | return R.ok(byId);} |
| | | else { |
| | | TCoupon byId = couponService.getById(id); |
| | | if (byId==null||byId.getStatus()==2){ |
| | | return R.fail(2,"内容不存在"); |
| | | return R.fail(2,"该商品已不存在"); |
| | | } |
| | | return R.ok(byId); |
| | | } |