| | |
| | | import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.web.domain.BasePojo; |
| | | import com.ruoyi.common.log.annotation.Log; |
| | | import com.ruoyi.common.log.enums.BusinessType; |
| | | import com.ruoyi.common.log.enums.OperatorType; |
| | | import com.ruoyi.common.redis.service.RedisService; |
| | | import com.ruoyi.common.security.annotation.Logical; |
| | | import com.ruoyi.common.security.annotation.RequiresPermissions; |
| | |
| | | import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; |
| | | import com.ruoyi.integration.api.model.ChargingOrderAndUploadRealTimeMonitoringDataDto; |
| | | import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData; |
| | | import com.ruoyi.order.api.dto.ChargingStatisticeDTO; |
| | | import com.ruoyi.order.api.model.*; |
| | | import com.ruoyi.order.api.query.ChargingOrderQuery; |
| | | import com.ruoyi.common.core.dto.MongoChargingOrderQuery; |
| | |
| | | import com.ruoyi.order.service.*; |
| | | import com.ruoyi.order.util.PreviousSixMonths; |
| | | import com.ruoyi.order.vo.EndOfChargePageInfo; |
| | | import com.ruoyi.order.vo.WatchChargingOrderVo; |
| | | import com.ruoyi.other.api.feignClient.RoleSiteClient; |
| | | import com.ruoyi.other.api.feignClient.UserSiteClient; |
| | | import com.ruoyi.payment.api.feignClient.AliPaymentClient; |
| | |
| | | import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | import com.ruoyi.system.api.feignClient.SysUserRoleClient; |
| | | import com.ruoyi.system.api.model.SysUserRoleVo; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | | import io.swagger.annotations.*; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | private RoleSiteClient roleSiteClient; |
| | | @Resource |
| | | private SysUserRoleClient sysUserRoleClient; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 远程调用 监管平台查询前一天用能统计 |
| | | * @return |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping(value = "/getChargingStatistics") |
| | | public R<List<TChargingOrder>> getChargingStatistics(@RequestBody ChargingStatisticeDTO dto) { |
| | | List<Long> collect = chargingOrderAccountingStrategyService.lambdaQuery().between(TChargingOrderAccountingStrategy::getCreateTime, dto.getStartTime(), dto.getEndTime()) |
| | | .list().stream().map(TChargingOrderAccountingStrategy::getChargingOrderId).collect(Collectors.toList()); |
| | | if (!collect.isEmpty()){ |
| | | List<TChargingOrder> list = chargingOrderService.lambdaQuery() |
| | | .in(TChargingOrder::getId,collect).list(); |
| | | return R.ok(list); |
| | | } |
| | | return R.ok(new ArrayList<TChargingOrder>()); |
| | | } |
| | | |
| | | /** |
| | | * 远程调用 增加管理后台赠送会员记录 |
| | |
| | | chargingOrderInfoVO.setList(list); |
| | | return AjaxResult.success(chargingOrderInfoVO); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | @Log(title = "【扫一扫】添加评价", businessType = BusinessType.INSERT,operatorType = OperatorType.MOBILE) |
| | | @ResponseBody |
| | | @PostMapping(value = "/addEvaluate") |
| | | @ApiOperation(value = "添加评价", tags = {"小程序-扫一扫"}) |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | @Log(title = "【扫一扫】支付充电充值费用", businessType = BusinessType.UPDATE,operatorType = OperatorType.MOBILE) |
| | | @ResponseBody |
| | | @PostMapping(value = "/paymentChargingOrder") |
| | | @ApiOperation(value = "支付充电充值费用", tags = {"小程序-扫一扫"}) |
| | |
| | | |
| | | |
| | | /** |
| | | * |
| | | * @param code |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping(value = "/refund1") |
| | | public R refund1(@RequestParam(value = "code") String code, @RequestParam(value = "money") BigDecimal money){ |
| | | chargingOrderService.refund1(code, money); |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 远程启动失败后退款回调 |
| | | */ |
| | | @ResponseBody |
| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | @ResponseBody |
| | | @GetMapping(value = "/preChargeCheck/{id}") |
| | | @ApiOperation(value = "获取安全检测数据", tags = {"小程序-扫一扫"}) |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | @ResponseBody |
| | | @GetMapping(value = "/getChargingDetails/{id}") |
| | | @ApiOperation(value = "获取充电中页面数据", tags = {"小程序-扫一扫"}) |
| | |
| | | ChargingDetails chargingDetails = chargingOrderService.getChargingDetails(id); |
| | | return AjaxResult.success(chargingDetails); |
| | | } |
| | | |
| | | |
| | | |
| | | @Log(title = "【扫一扫】手动停止充电", businessType = BusinessType.STOP,operatorType = OperatorType.MOBILE) |
| | | @ResponseBody |
| | | @PutMapping(value = "/stopCharging/{id}") |
| | | @ApiOperation(value = "手动停止充电", tags = {"小程序-扫一扫"}) |
| | |
| | | BigDecimal periodElectricPrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | BigDecimal periodServicePrice = collect.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | totalElectrovalence = totalElectrovalence.add(periodElectricPrice); |
| | | commissionAmount = commissionAmount.add(order.getRechargeAmount().multiply(new BigDecimal("0.006"))); |
| | | if(2 != order.getOrderSource()){ |
| | | totalServiceCharge = totalServiceCharge.add(periodServicePrice); |
| | | commissionAmount = commissionAmount.add((periodElectricPrice.add(periodServicePrice)).multiply(new BigDecimal("0.006"))); |
| | | }else{ |
| | | totalServiceCharge = totalServiceCharge.add(periodServicePrice.multiply(new BigDecimal("0.8"))); |
| | | sharingAmount = sharingAmount.add(periodServicePrice.multiply(new BigDecimal("0.2"))); |
| | |
| | | @ResponseBody |
| | | @PostMapping(value = "/watch/chargingOrder") |
| | | @ApiOperation(value = "监控订单", tags = {"管理后台-订单管理"}) |
| | | public R watchChargingOrder(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery) { |
| | | public R watchChargingOrder(@RequestBody MongoChargingOrderQuery query) { |
| | | Set<Integer> ids = null; |
| | | //校验合作商权限 |
| | | SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); |
| | |
| | | data.addAll(data1); |
| | | } |
| | | ids = new HashSet<>(data); |
| | | }else{ |
| | | ids = new HashSet<>(); |
| | | ids.add(-1); |
| | | } |
| | | } |
| | | mongoChargingOrderQuery.setSiteIds(ids); |
| | | mongoChargingOrderQuery.setPageSize(10); |
| | | R<UploadRealTimeMonitoringPageData> all = uploadRealTimeMonitoringDataClient.getAll(mongoChargingOrderQuery); |
| | | UploadRealTimeMonitoringPageData data1 = all.getData(); |
| | | |
| | | List<ChargingOrderAndUploadRealTimeMonitoringDataDto> dtos = new ArrayList<>(); |
| | | Map<String,ChargingOrderVO> map = new HashMap<>(); |
| | | |
| | | for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data1.getRecords()) { |
| | | if (roleType==2){ |
| | | List<Boolean> data = partnerClient.watchChargingOrder(sysUser.getObjectId(), uploadRealTimeMonitoringData.getSiteId()).getData(); |
| | | uploadRealTimeMonitoringData.setAuthInfo(data.get(0)); |
| | | uploadRealTimeMonitoringData.setAuthDelete(data.get(1)); |
| | | } |
| | | ChargingOrderAndUploadRealTimeMonitoringDataDto dataDto = new ChargingOrderAndUploadRealTimeMonitoringDataDto(); |
| | | ChargingOrderQuery dto = new ChargingOrderQuery(); |
| | | dto.setCode(uploadRealTimeMonitoringData.getTransaction_serial_number()); |
| | | |
| | | if (map.get(uploadRealTimeMonitoringData.getTransaction_serial_number())==null) { |
| | | TCharingOrderVO vo = chargingOrderService.chargingOrder(dto); |
| | | map.put(uploadRealTimeMonitoringData.getTransaction_serial_number(),vo.getList().getRecords().get(0)); |
| | | if (!vo.getList().getRecords().isEmpty()) { |
| | | ChargingOrderVO chargingOrderVO = vo.getList().getRecords().get(0); |
| | | if (chargingOrderVO != null) { |
| | | BeanUtils.copyProperties(chargingOrderVO, dataDto); |
| | | } |
| | | |
| | | BeanUtils.copyProperties(uploadRealTimeMonitoringData, dataDto); |
| | | if (chargingOrderVO != null && chargingOrderVO.getOrderSource()==2){ |
| | | dataDto.setPeriod_service_price(uploadRealTimeMonitoringData.getPeriod_service_price().multiply(new BigDecimal("0.2").setScale(2,BigDecimal.ROUND_DOWN))); |
| | | } |
| | | dataDto.setStartTime(uploadRealTimeMonitoringData.getStartTime()); |
| | | dataDto.setEndTime(uploadRealTimeMonitoringData.getEndTime() == null ? null : uploadRealTimeMonitoringData.getEndTime()); |
| | | dataDto.setStatus(uploadRealTimeMonitoringData.getStatus()); |
| | | dtos.add(dataDto); |
| | | } |
| | | }else { |
| | | ChargingOrderVO vo = map.get(uploadRealTimeMonitoringData.getTransaction_serial_number()); |
| | | BeanUtils.copyProperties(vo, dataDto); |
| | | BeanUtils.copyProperties(uploadRealTimeMonitoringData, dataDto); |
| | | dataDto.setStartTime(uploadRealTimeMonitoringData.getStartTime()); |
| | | dataDto.setEndTime(uploadRealTimeMonitoringData.getEndTime() == null ? null : uploadRealTimeMonitoringData.getEndTime()); |
| | | dataDto.setStatus(uploadRealTimeMonitoringData.getStatus()); |
| | | dtos.add(dataDto); |
| | | } |
| | | |
| | | LambdaQueryWrapper<TChargingOrder> queryWrapper = new LambdaQueryWrapper<TChargingOrder>().like(StringUtils.isNotEmpty(query.getCode()), TChargingOrder::getCode, query.getCode()) |
| | | .eq(null != query.getOrderType(), TChargingOrder::getOrderType, query.getOrderType()) |
| | | .eq(null != query.getSiteId(), TChargingOrder::getSiteId, query.getSiteId()) |
| | | .eq(null != query.getPileId(), TChargingOrder::getChargingPileId, query.getPileId()) |
| | | .eq(null != query.getGunId(), TChargingOrder::getChargingGunId, query.getGunId()) |
| | | .eq(null != query.getStatus(), TChargingOrder::getStatus, query.getStatus()) |
| | | .eq(TChargingOrder::getDelFlag, 0).eq(TChargingOrder::getRechargePaymentStatus, 2) |
| | | .in(null != ids && ids.size() > 0, TChargingOrder::getSiteId, ids); |
| | | if(StringUtils.isNotEmpty(query.getCreateTime())){ |
| | | String[] split = query.getCreateTime().split(" - "); |
| | | queryWrapper.between(TChargingOrder::getStartTime, split[0], split[1]); |
| | | } |
| | | for (int i = 0; i < dtos.size(); i++) { |
| | | dtos.get(i).setIndex(i); |
| | | if(StringUtils.isNotEmpty(query.getLastTime())){ |
| | | String[] split = query.getLastTime().split(" - "); |
| | | queryWrapper.between(TChargingOrder::getEndTime, split[0], split[1]); |
| | | } |
| | | |
| | | PageChargingOrderAndUploadRealTimeMonitoringDataDto page = new PageChargingOrderAndUploadRealTimeMonitoringDataDto(); |
| | | page.setTotal(data1.getCount()); |
| | | page.setRecords(dtos); |
| | | |
| | | return R.ok(page); |
| | | PageInfo<TChargingOrder> pageInfo = new PageInfo<>(query.getPageCurr(), query.getPageSize()); |
| | | PageInfo<TChargingOrder> orderPageInfo = chargingOrderService.page(pageInfo, queryWrapper.orderByDesc(TChargingOrder::getCreateTime)); |
| | | List<Site> siteList = siteClient.getSiteAll().getData(); |
| | | |
| | | List<WatchChargingOrderVo> list = new ArrayList<>(); |
| | | for (TChargingOrder record : orderPageInfo.getRecords()) { |
| | | WatchChargingOrderVo vo = new WatchChargingOrderVo(); |
| | | BeanUtils.copyProperties(record, vo); |
| | | vo.setIdStr(record.getId().toString()); |
| | | Site site = siteList.stream().filter(s->s.getId().equals(record.getSiteId())).findFirst().get(); |
| | | vo.setSiteName(site.getName()); |
| | | TChargingPile chargingPile = chargingPileClient.getChargingPileById(record.getChargingPileId()).getData(); |
| | | vo.setTerminalName(chargingPile.getName()); |
| | | TChargingGun chargingGun = chargingGunClient.getChargingGunById(record.getChargingGunId()).getData(); |
| | | vo.setTerminalCode(chargingGun.getName()); |
| | | |
| | | if(null != record.getStartTime() && null != record.getEndTime()){ |
| | | long time = record.getEndTime().toEpochSecond(ZoneOffset.UTC) - record.getStartTime().toEpochSecond(ZoneOffset.UTC); |
| | | vo.setChargingTime(time + ""); |
| | | } |
| | | long count = chargingOrderAccountingStrategyService.count(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, record.getId())); |
| | | vo.setTimeFrame(count); |
| | | |
| | | vo.setAuthInfo(roleType == 1 ? true : partnerClient.authMenu(objectId, record.getSiteId(), SiteMenu.CHARGING_PILE_ORDER_MONITORING_RECORD_INFO.getValue())); |
| | | vo.setAuthDelete(roleType == 1 ? true : partnerClient.authMenu(objectId, record.getSiteId(), SiteMenu.CHARGING_PILE_ORDER_MONITORING_RECORD_DEL.getValue())); |
| | | list.add(vo); |
| | | } |
| | | PageInfo<WatchChargingOrderVo> pageInfos = new PageInfo<>(query.getPageCurr(), query.getPageSize()); |
| | | pageInfos.setRecords(list); |
| | | pageInfos.setCurrent(pageInfo.getCurrent()); |
| | | pageInfos.setPages(pageInfo.getPages()); |
| | | pageInfos.setSize(pageInfo.getSize()); |
| | | pageInfos.setStartIndex(pageInfo.getStartIndex()); |
| | | pageInfos.setTotal(pageInfo.getTotal()); |
| | | return R.ok(pageInfos); |
| | | } |
| | | |
| | | |
| | |
| | | start = statisticsQueryDto.getStartTime(); |
| | | end = statisticsQueryDto.getEndTime(); |
| | | }else if (statisticsQueryDto.getDayType()==5){ |
| | | // 获取今年1月1日的日期 |
| | | start = statisticsQueryDto.getStartTime(); |
| | | end = statisticsQueryDto.getEndTime(); |
| | | if (start.equals(end)){ |
| | |
| | | BigDecimal commissionAmount = BigDecimal.ZERO; |
| | | for (Map<String, Object> map : maps) { |
| | | BigDecimal periodElectricPrice = (BigDecimal) map.get("period_electric_price"); |
| | | allMoney = allMoney.add(periodElectricPrice); |
| | | Long order_source = (Long)map.get("order_source"); |
| | | if(2 != order_source){ |
| | | allMoney = allMoney.add(periodElectricPrice); |
| | | } |
| | | BigDecimal total_amount = (BigDecimal) map.get("total_amount"); |
| | | allMoney = allMoney.add(total_amount); |
| | | commissionAmount = commissionAmount.add((BigDecimal) map.get("commissionAmount")); |
| | |
| | | return chargingOrderService.getNotPaymentChargingOrder(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 手动推送订单给三方平台 |
| | | * @param code |
| | | * @return |
| | | */ |
| | | @PostMapping("/pushOrderInfo") |
| | | public R pushOrderInfo(@RequestParam String code){ |
| | | return chargingOrderService.pushOrderInfo(code); |
| | | } |
| | | |
| | | } |