| | |
| | | import com.ruoyi.chargingPile.api.vo.*; |
| | | import com.ruoyi.chargingPile.api.domain.SiteMenu; |
| | | import com.ruoyi.chargingPile.dto.ChargingPercentBack; |
| | | import com.ruoyi.chargingPile.dto.BatchSetSiteAccountingStrategyDTO; |
| | | import com.ruoyi.chargingPile.dto.SiteExcelDTO; |
| | | import com.ruoyi.chargingPile.dto.SiteImportResultDTO; |
| | | import com.ruoyi.common.core.dto.ChargingOrderGroup; |
| | | import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; |
| | | import com.ruoyi.chargingPile.service.*; |
| | |
| | | import com.ruoyi.common.core.utils.DateUtils; |
| | | import com.ruoyi.common.core.utils.ServletUtils; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.utils.poi.ExcelUtil; |
| | | import com.ruoyi.common.core.web.domain.AjaxResult; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.common.log.annotation.Log; |
| | |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalTime; |
| | | import java.time.temporal.ChronoUnit; |
| | |
| | | SiteInfoVO siteInfoVO = new SiteInfoVO(); |
| | | TChargingGun chargingGun = chargingGunService.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getFullNumber, number)); |
| | | Site site = siteService.getById(chargingGun.getSiteId()); |
| | | siteInfoVO.setMemberDiscountFlag(site.getMemberDiscountFlag()); |
| | | Integer accountingStrategyId = chargingGun.getAccountingStrategyId(); |
| | | if(null == accountingStrategyId){ |
| | | accountingStrategyId = site.getAccountingStrategyId(); |
| | |
| | | if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0 |
| | | && DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){ |
| | | siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP)); |
| | | siteInfoVO.setVipElectrovalence(siteInfoVO.getElectrovalence()); |
| | | // 获取当前登录用户id |
| | | String token = SecurityUtils.getToken(ServletUtils.getRequest()); |
| | | if(StringUtils.isNotEmpty(token)){ |
| | | if(Integer.valueOf(1).equals(site.getMemberDiscountFlag()) && StringUtils.isNotEmpty(token)){ |
| | | Long userId = tokenService.getLoginUserApplet().getUserId(); |
| | | // 根据id查询用户信息 |
| | | TAppUser appUser = appUserClient.getUserById(userId).getData(); |
| | |
| | | TChargingPile one = chargingPileService.lambdaQuery().eq(TChargingPile::getCode, number).one(); |
| | | TChargingGun chargingGun = chargingGunService.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, one.getId()).last(" limit 0, 1")); |
| | | Site site = siteService.getById(chargingGun.getSiteId()); |
| | | siteInfoVO.setMemberDiscountFlag(site.getMemberDiscountFlag()); |
| | | Integer accountingStrategyId = chargingGun.getAccountingStrategyId(); |
| | | if(null == accountingStrategyId){ |
| | | accountingStrategyId = site.getAccountingStrategyId(); |
| | |
| | | if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0 |
| | | && DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){ |
| | | siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP)); |
| | | siteInfoVO.setVipElectrovalence(siteInfoVO.getElectrovalence()); |
| | | // 获取当前登录用户id |
| | | String token = SecurityUtils.getToken(ServletUtils.getRequest()); |
| | | if(StringUtils.isNotEmpty(token)){ |
| | | if(Integer.valueOf(1).equals(site.getMemberDiscountFlag()) && StringUtils.isNotEmpty(token)){ |
| | | Long userId = tokenService.getLoginUserApplet().getUserId(); |
| | | // 根据id查询用户信息 |
| | | TAppUser appUser = appUserClient.getUserById(userId).getData(); |
| | |
| | | } |
| | | } |
| | | |
| | | if(Objects.nonNull(byId1.getDiscount())){ |
| | | if(Integer.valueOf(1).equals(site.getMemberDiscountFlag()) && Objects.nonNull(byId1.getDiscount())){ |
| | | siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP)); |
| | | }else { |
| | | siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP)); |
| | |
| | | public AjaxResult<Map<String,ChargingGunCountVO>> getChargingGunCount1(@RequestParam(value = "siteId")@ApiParam(value = "站点id", required = true)Integer siteId){ |
| | | return AjaxResult.success(chargingGunService.getChargingGunCount(siteId)); |
| | | } |
| | | |
| | | @RequiresPermissions(value = {"/site/add"}, logical = Logical.OR) |
| | | @GetMapping("/importTemplate") |
| | | @ApiOperation(value = "下载站点导入模板", tags = {"管理后台-站点管理"}) |
| | | public void importTemplate(HttpServletResponse response) { |
| | | ExcelUtil<SiteExcelDTO> util = new ExcelUtil<>(SiteExcelDTO.class); |
| | | util.importTemplateExcel(response, "站点导入模板", |
| | | "填写说明:所在区域填写区县行政区划代码;带*字段为必填;合作商、服务商、场地方和计费模板填写系统中的完整名称。") ; |
| | | } |
| | | |
| | | @RequiresPermissions(value = {"/site/add"}, logical = Logical.OR) |
| | | @PostMapping("/import") |
| | | @Log(title = "【站点管理】导入站点", businessType = BusinessType.IMPORT, operatorType = OperatorType.MANAGE) |
| | | @ApiOperation(value = "导入站点", tags = {"管理后台-站点管理"}) |
| | | public AjaxResult importSites(@RequestParam("file") MultipartFile file, |
| | | @RequestParam(value = "cover", defaultValue = "false") Boolean cover) throws Exception { |
| | | SiteImportResultDTO result = siteService.importSites(file, cover); |
| | | if (Boolean.TRUE.equals(result.getNeedConfirm())) { |
| | | return AjaxResult.error("发现重复站点编号,请确认是否覆盖", result); |
| | | } |
| | | if (result.getErrorCount() != null && result.getErrorCount() > 0) { |
| | | return AjaxResult.error("导入失败,请检查错误信息", result); |
| | | } |
| | | return AjaxResult.success("导入成功", result); |
| | | } |
| | | |
| | | @RequiresPermissions(value = {"/site/export", "/site"}, logical = Logical.OR) |
| | | @PutMapping("/export") |
| | | @Log(title = "【站点管理】导出站点", businessType = BusinessType.EXPORT, operatorType = OperatorType.MANAGE) |
| | | @ApiOperation(value = "导出站点", tags = {"管理后台-站点管理"}) |
| | | public void exportSites(@RequestBody GetSiteList query, HttpServletResponse response) { |
| | | List<Site> sites = siteService.listSitesForExport(query); |
| | | Set<Integer> partnerIds = sites.stream() |
| | | .flatMap(site -> Arrays.asList(site.getPartnerId(), site.getVenuePartnerId()).stream()) |
| | | .filter(Objects::nonNull) |
| | | .collect(Collectors.toSet()); |
| | | Map<Integer, String> partnerNames = partnerIds.isEmpty() ? Collections.emptyMap() |
| | | : partnerService.listByIds(partnerIds).stream() |
| | | .collect(Collectors.toMap(Partner::getId, Partner::getName, (a, b) -> a)); |
| | | Set<Integer> strategyIds = sites.stream().map(Site::getAccountingStrategyId) |
| | | .filter(Objects::nonNull).collect(Collectors.toSet()); |
| | | Map<Integer, String> strategyNames = strategyIds.isEmpty() ? Collections.emptyMap() |
| | | : accountingStrategyService.listByIds(strategyIds).stream() |
| | | .collect(Collectors.toMap(TAccountingStrategy::getId, TAccountingStrategy::getName, (a, b) -> a)); |
| | | List<SiteExcelDTO> rows = sites.stream().map(site -> SiteExcelDTO.from(site, |
| | | partnerNames.get(site.getPartnerId()), partnerNames.get(site.getVenuePartnerId()), |
| | | strategyNames.get(site.getAccountingStrategyId()))).collect(Collectors.toList()); |
| | | new ExcelUtil<>(SiteExcelDTO.class).exportExcel(response, rows, "站点数据"); |
| | | } |
| | | |
| | | @RequiresPermissions(value = {"/site/add"}, logical = Logical.OR) |
| | | @ResponseBody |
| | |
| | | @ApiOperation(value = "获取站点预约设置", tags = {"管理后台-站点管理"}) |
| | | public AjaxResult<Site> getReservationSetting(@PathVariable Integer id){ |
| | | Site site = siteService.lambdaQuery() |
| | | .select(Site::getId, Site::getName, Site::getSupportOrder, Site::getReservationStartTime, Site::getReservationEndTime) |
| | | .select(Site::getId, Site::getName, Site::getSupportOrder, Site::getReservationStartTime, Site::getReservationEndTime, Site::getReservationAheadMinute) |
| | | .eq(Site::getId, id) |
| | | .eq(Site::getDelFlag, 0) |
| | | .one(); |
| | |
| | | .set(Site::getSupportOrder, site.getSupportOrder()) |
| | | .set(Site::getReservationStartTime, site.getReservationStartTime()) |
| | | .set(Site::getReservationEndTime, site.getReservationEndTime()) |
| | | .set(Site::getReservationAheadMinute, site.getReservationAheadMinute()) |
| | | .update(); |
| | | return success ? AjaxResult.success() : AjaxResult.error("保存预约设置失败"); |
| | | } |
| | |
| | | @PostMapping("/batchSetAccountingStrategy") |
| | | @ApiOperation(value = "批量设置站点计费策略", tags = {"管理后台-站点管理"}) |
| | | @Log(title = "【站点管理】批量设置站点计费策略", businessType = BusinessType.UPDATE) |
| | | public AjaxResult batchSetAccountingStrategy(@RequestParam("ids") List<Integer> ids, @RequestParam("accountingStrategyId") Integer accountingStrategyId){ |
| | | siteService.batchSetAccountingStrategy(ids, accountingStrategyId); |
| | | public AjaxResult batchSetAccountingStrategy(@RequestBody BatchSetSiteAccountingStrategyDTO request){ |
| | | if (request == null || CollectionUtils.isEmpty(request.getIds())) { |
| | | return AjaxResult.error("请选择要设置计费策略的站点"); |
| | | } |
| | | if (request.getAccountingStrategyId() == null) { |
| | | return AjaxResult.error("请选择计费模板"); |
| | | } |
| | | siteService.batchSetAccountingStrategy(request.getIds(), request.getAccountingStrategyId()); |
| | | return AjaxResult.success(); |
| | | } |
| | | |