ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/ParkingRecordQuery.java
@@ -22,5 +22,7 @@ @ApiModelProperty(value = "停车场id集合 前端忽略") private List<Integer> lotIds; @ApiModelProperty(value = "站点id集合 前端忽略") private List<Integer> siteIds; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -109,7 +109,7 @@ } @Override public R<SettlementTotalVO> settlementTotalR(String time) { public R<SettlementTotalVO> settlementTotalR(String time,Long userId) { return R.fail("查询结算汇总表导出列表失败:" + throwable.getMessage()); } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -120,8 +120,8 @@ @GetMapping(value = "/financial/settlement/downloadSettlement/{uid}") public R<TSettlementConfirm> downloadSettlement(@PathVariable("uid") String uid); @GetMapping(value = "/financial/settlement/settlementTotalR/{time}") public R<SettlementTotalVO> settlementTotalR(@PathVariable("time")String time); @GetMapping(value = "/financial/settlement/settlementTotalR/{time}/{userId}") public R<SettlementTotalVO> settlementTotalR(@PathVariable("time")String time,@PathVariable("userId")Long userId); /** * 修改充电订单 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java
@@ -44,5 +44,7 @@ private List<Long> userIds; @ApiModelProperty("车辆ids 前端忽略") private List<Long> carIds; @ApiModelProperty("站点ids 前端忽略") private List<Integer> siteIds; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/ChargingOrderQuery.java
@@ -33,4 +33,6 @@ private Integer orderSource; @ApiModelProperty(value = "用户ids 前端忽略") private List<Long> userIds; @ApiModelProperty(value = "站点ids 前端忽略") private List<Integer> siteIds; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java
@@ -15,6 +15,8 @@ private Integer type; @ApiModelProperty(value = "站点ids 选择全部 不传") private Integer siteIds; @ApiModelProperty(value = "站点ids 选择全部 不传") private List<Integer> siteIdss; @ApiModelProperty(value = "合作商id ") private Integer partnerId; @ApiModelProperty(value = "开始时间2020-01-01 00:00:00") ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ChargingPercentProvinceDto.java
@@ -4,10 +4,12 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @Data public class ChargingPercentProvinceDto { String provinceCode; LocalDate date1; LocalDate date2; List<Integer> siteIds; } ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/MongoChargingOrderQuery.java
@@ -32,4 +32,5 @@ private Integer orderSource; @ApiModelProperty(value = "用户ids 前端忽略") private List<Long> userIds; private List<Integer> siteIds; } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -13,6 +13,7 @@ import com.ruoyi.account.api.vo.GetAppUserVipDetail; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.query.GetSiteList; import com.ruoyi.chargingPile.api.query.SiteDetailQuery; @@ -331,6 +332,11 @@ return R.ok(divide); } @Resource private SiteClient siteClient; @RequiresPermissions(value = {"/chargeDistribution"}, logical = Logical.OR) @@ -338,8 +344,14 @@ @ApiOperation(value = "获取该充电站的利用率", tags = {"管理后台-数据分析-电站分析"}) public R getPercentByCityCode(@RequestBody ChargingPercentProvinceDto chargingPercentProvinceDto){ Long userid = tokenService.getLoginUser().getUserid(); List<Integer> siteIds = new ArrayList<>(); List<GetSiteListDTO> data1 = siteClient.getSiteListByUserId(userid).getData(); for (GetSiteListDTO datum : data1) { siteIds.add(datum.getId()); } chargingPercentProvinceDto.setSiteIds(siteIds); GetSiteList siteList = new GetSiteList(); ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
@@ -14,6 +14,7 @@ import com.ruoyi.common.core.utils.WebUtils; import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.common.security.annotation.Logical; import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; @@ -387,7 +388,8 @@ @Log(title = "【结算汇总表】下载汇总表", businessType = BusinessType.EXPORT) public R downloadSettlementTotal(@RequestBody ExportUidDto uid,HttpServletResponse response) { SettlementTotalVO data = chargingOrderClient.settlementTotalR(uid.getTime()).getData(); Long userId = SecurityUtils.getUserId(); SettlementTotalVO data = chargingOrderClient.settlementTotalR(uid.getTime(),userId).getData(); try { response.setCharacterEncoding(Constants.UTF8); response.setContentType("application/vnd.ms-excel"); ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -5,6 +5,8 @@ import cn.afterturn.easypoi.excel.entity.ExportParams; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.model.TParkingRecord; import com.ruoyi.chargingPile.api.query.ParkingRecordQuery; @@ -22,6 +24,7 @@ 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.security.service.TokenService; import com.ruoyi.common.security.annotation.Logical; import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.order.api.query.TOrderInvoiceQuery; @@ -62,12 +65,30 @@ private TParkingRecordService parkingRecordService; @Resource private TParkingLotService parkingLotService; @Resource private SiteClient siteClient; @Resource private TokenService tokenService; @RequiresPermissions(value = {"/parkingRecord"}, logical = Logical.OR) @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "列表") @PostMapping(value = "/page") public R<Page<TParkingRecord>> page(@RequestBody ParkingRecordPageQuery query) { Long userid = tokenService.getLoginUser().getUserid(); List<Integer> siteIds = new ArrayList<>(); List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userid).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } List<TParkingLot> list = parkingLotService.lambdaQuery().in(!siteIds.isEmpty(), TParkingLot::getSiteId, siteIds).list(); List<Integer> ids = new ArrayList<>(); for (TParkingLot tParkingLot : list) { ids.add(tParkingLot.getId()); } String s1 = ""; String s2 = ""; if (query.getTimePeriod()!=null){ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
@@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.model.TParkingRecord; @@ -14,12 +16,15 @@ import com.ruoyi.chargingPile.mapper.TParkingRecordMapper; import com.ruoyi.chargingPile.service.TParkingRecordService; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; @@ -40,6 +45,8 @@ private SiteMapper siteMapper; @Autowired private TParkingLotMapper parkingLotMapper; @Resource private SiteClient siteClient; @Override public BigDecimal getSum(LocalDate sixBefore) { @@ -48,6 +55,20 @@ @Override public TParkingRecordPageInfoVO pageList(ParkingRecordQuery query) { Long userId = SecurityUtils.getUserId(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); if (query.getSiteId()==null){ if (userId != null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } }else { siteIds.add(query.getSiteId()); } query.setSiteIds(siteIds); PageInfo<TParkingRecordVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); // 查询站点的停车场id if(Objects.nonNull(query.getSiteId())){ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
@@ -78,6 +78,9 @@ if (mongoChargingOrderQuery.getSiteId() != null){ query.addCriteria(Criteria.where("siteId").is(mongoChargingOrderQuery.getSiteId())); } if (!mongoChargingOrderQuery.getSiteIds().isEmpty()){ query.addCriteria(Criteria.where("siteId").in(mongoChargingOrderQuery.getSiteIds())); } if (mongoChargingOrderQuery.getChargingPileCode() != null && !mongoChargingOrderQuery.getChargingPileCode().isEmpty()) { query.addCriteria(Criteria.where("charging_pile_code").is(mongoChargingOrderQuery.getChargingPileCode())); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
@@ -184,6 +184,7 @@ @PutMapping("/export") public void export(@RequestBody ChargingListQuery dto) { ChargingBillVO res = chargingBillService.chargingBillList(dto); List<ChargingBillListVO> list = res.getList().getRecords(); List<TChargingBillExport> tChargingBillExports = new ArrayList<>(); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
@@ -299,10 +299,10 @@ @GetMapping(value = "/settlementTotalR/{time}") public R<SettlementTotalVO> settlementTotalR(@PathVariable("time")String time) { @GetMapping(value = "/settlementTotalR/{time}/{userId}") public R<SettlementTotalVO> settlementTotalR(@PathVariable("time")String time,@PathVariable("userId")Long userId) { time = time+"-01 00:00:00"; SettlementTotalVO res = chargingOrderService.settlementTotal(time); SettlementTotalVO res = chargingOrderService.settlementTotalR(time,userId); return R.ok(res); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -819,7 +819,17 @@ @PostMapping(value = "/watch/chargingOrder") @ApiOperation(value = "监控订单", tags = {"管理后台-订单管理"}) public R watchChargingOrder(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery) { Long userid = tokenService.getLoginUser().getUserid(); List<Integer> siteIds = new ArrayList<>(); if (mongoChargingOrderQuery.getSiteId()==null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userid).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } }else { siteIds.add(mongoChargingOrderQuery.getSiteId()); } mongoChargingOrderQuery.setSiteIds(siteIds); mongoChargingOrderQuery.setPageSize(10); R<UploadRealTimeMonitoringPageData> all = uploadRealTimeMonitoringDataClient.getAll(mongoChargingOrderQuery); UploadRealTimeMonitoringPageData data1 = all.getData(); @@ -1166,11 +1176,24 @@ @PostMapping(value = "/charging/users") @ApiOperation(value = "除电站流量外", tags = {"管理后台-数据分析-充电用户分析"}) public R<TCharingUserMapVO> users(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto){ Long userId = tokenService.getLoginUserApplet().getUserId(); List<Integer> siteIds = new ArrayList<>(); if (statisticsQueryDto.getSiteId()==null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } }else { siteIds.add(statisticsQueryDto.getSiteId()); } statisticsQueryDto.setSiteIds(siteIds); TCharingUserMapVO tCharingUserMapVO = new TCharingUserMapVO(); //上方折现 if (statisticsQueryDto.getDayType()==1){ List<Map<String,Object>> map = chargingOrderService.usersDay(); List<Map<String,Object>> map = chargingOrderService.usersDay(statisticsQueryDto); List<Map<String, Object>> charMap = new ArrayList<>(); // 生成从 "00:00" 到 "23:00" 的时间数据 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingStatisticsQueryDto.java
@@ -6,6 +6,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @Data public class ChargingStatisticsQueryDto { @@ -20,4 +21,5 @@ @ApiModelProperty("工作台用查询参数") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8") private LocalDateTime selectDate; private List<Integer> siteIds; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -88,7 +88,7 @@ List<Map<String, Object>> queryOrderCountAndMoneyBySiteIdDate(@Param("siteIds")List<Integer> siteIds); List<Map<String, Object>> usersDay(); List<Map<String, Object>> usersDay(@Param("statisticsQueryDto")ChargingStatisticsQueryDto statisticsQueryDto); List<Map<String, Object>> usersDay1(); List<Map<String, Object>> usersByQuery(@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TSettlementConfirmMapper.java
@@ -29,5 +29,5 @@ List<TSettlementConfirm> settlementList(@Param("pageInfo") PageInfo<TSettlementConfirm> pageInfo, @Param("req") SettlementListQuery dto); List<TSettlementConfirm> settlementTotal(@Param("time") String time); List<TSettlementConfirm> settlementTotal(@Param("time") String time,@Param("siteIds")List<Integer> siteIds); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -194,7 +194,7 @@ List<Map<String, Object>> queryOrderCountAndMoneyBySiteIdDate(List<Integer> siteIds); List<Map<String, Object>> usersDay(); List<Map<String, Object>> usersDay(ChargingStatisticsQueryDto statisticsQueryDto); List<Map<String, Object>> usersDay1(); List<Map<String, Object>> usersByQuery(ChargingStatisticsQueryDto statisticsQueryDto); @@ -231,6 +231,7 @@ PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto); SettlementTotalVO settlementTotal(String time); SettlementTotalVO settlementTotalR(String time,Long userId); List<Map<String, Object>> countBySource(List<Integer> siteIds,ChargingStatisticsQueryDto statisticsQueryDto); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
@@ -4,6 +4,7 @@ import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; @@ -11,6 +12,7 @@ import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.order.api.model.TChargingOrder; @@ -88,6 +90,20 @@ startTime1 = split[0]; startTime2 = split[1]; } Long userId = SecurityUtils.getUserId(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); if (dto.getSiteId()==null){ if (userId != null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } }else { siteIds.add(dto.getSiteId()); } dto.setSiteIds(siteIds); PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); PageInfo<ChargingBillListVO> pageInfo1 = new PageInfo<>(1,9999999); List<ChargingBillListVO> list = this.baseMapper.chargingBillList1(pageInfo,dto,startTime1,startTime2); @@ -469,6 +485,19 @@ } PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); PageInfo<ChargingBillListVO> pageInfo1 = new PageInfo<>(1,9999999); Long userId = SecurityUtils.getUserId(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); if (dto.getSiteId()==null){ if (userId != null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } }else { siteIds.add(dto.getSiteId()); } List<ChargingBillListVO> list = this.baseMapper.chargingBillList(pageInfo,dto,startTime1,startTime2); List<ChargingBillListVO> list1 = this.baseMapper.chargingBillList(pageInfo1,dto,startTime1,startTime2); BigDecimal paymentAmountTotal = new BigDecimal("0"); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -9,6 +9,7 @@ import com.ruoyi.account.api.model.*; import com.ruoyi.account.api.vo.GetAppUserVipDetail; import com.ruoyi.account.api.vo.GetInviteUser; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.vo.GetChargingGunByCode; @@ -19,6 +20,7 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient; import com.ruoyi.integration.api.feignClient.PlatformStartChargingReplyClient; import com.ruoyi.integration.api.feignClient.SendMessageClient; @@ -1209,6 +1211,20 @@ } dto.setUserIds(data); } Long userId = SecurityUtils.getUserId(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); if (dto.getSiteId()==null){ if (userId != null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } }else { siteIds.add(dto.getSiteId()); } dto.setSiteIds(siteIds); List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo,dto,startTime1,startTime2,endTime1,endTime2); List<ChargingOrderVO> list1 = this.baseMapper.chargingOrder(pageInfo1,dto,startTime1,startTime2,endTime1,endTime2); BigDecimal total = new BigDecimal("0"); @@ -1238,7 +1254,7 @@ List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>() .eq("charging_order_id", chargingOrderVO.getId())); UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData(); if (data5!=null){ if (data5!=null && data5.getCumulative_charging_time()!=null){ long l = data5.getCumulative_charging_time() * 60L; chargingOrderVO.setChargingSecond(l); } @@ -1265,13 +1281,13 @@ paymentMoney= paymentMoney.add(chargingOrderVO.getPaymentAmount()!=null?chargingOrderVO.getPaymentAmount():new BigDecimal("0")); commissionMoney = commissionMoney.add(chargingOrderVO.getOrderAmount()!=null?chargingOrderVO.getOrderAmount().multiply(new BigDecimal("0.006")):new BigDecimal("0")); if (chargingOrderVO.getChargingCapacity()!=null){ total = total.add(chargingOrderVO.getElectricity()); total = total.add(chargingOrderVO.getElectricity()!=null?chargingOrderVO.getElectricity():new BigDecimal("0")); } // 充电订单 明细记录 List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>() .eq("charging_order_id", chargingOrderVO.getId())); UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData(); if (data5!=null){ if (data5!=null && data5.getCumulative_charging_time()!=null){ long l = data5.getCumulative_charging_time() * 60L; chargingOrderVO.setChargingSecond(l); time+=l; @@ -1413,6 +1429,20 @@ dto.setCarIds(carIds); } } Long userId = SecurityUtils.getUserId(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); if (dto.getSiteId()==null){ if (userId != null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } }else { siteIds.add(dto.getSiteId()); } dto.setSiteIds(siteIds); PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2); for (ChargingOrderListVO chargingOrderListVO : list) { @@ -2214,8 +2244,8 @@ } @Override public List<Map<String, Object>> usersDay() { return this.baseMapper.usersDay(); public List<Map<String, Object>> usersDay(ChargingStatisticsQueryDto statisticsQueryDto) { return this.baseMapper.usersDay(statisticsQueryDto); } @Override @@ -2681,6 +2711,20 @@ } dto.setStartTime(startTime); dto.setEndTime(endTime); Long userId = SecurityUtils.getUserId(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); if (dto.getSiteIds()==null){ if (userId != null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } }else { siteIds.add(dto.getSiteIds()); } dto.setSiteIdss(siteIds); PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto); for (TSettlementConfirm tSettlementConfirm : list) { @@ -2706,12 +2750,259 @@ @Override public SettlementTotalVO settlementTotal(String time) { Long userId = SecurityUtils.getUserId(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); if (userId != null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } SettlementTotalVO res = new SettlementTotalVO(); List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time); List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds); LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 减少一个月 LocalDateTime minus = parse.minusMonths(1); List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time); List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time,siteIds); // 合计 List<TSettlementConfirm> total = new ArrayList<>(); TSettlementConfirm tSettlementConfirm1 = new TSettlementConfirm(); BigDecimal meteringElectronic = new BigDecimal("0"); BigDecimal chargingElectronic = new BigDecimal("0"); BigDecimal lossElectronic = new BigDecimal("0"); BigDecimal income = new BigDecimal("0"); BigDecimal venue = new BigDecimal("0"); BigDecimal metering = new BigDecimal("0"); BigDecimal clean = new BigDecimal("0"); BigDecimal maintain = new BigDecimal("0"); BigDecimal cost = new BigDecimal("0"); BigDecimal profitMoney = new BigDecimal("0"); BigDecimal newMoney = new BigDecimal("0"); BigDecimal newSettlement = new BigDecimal("0"); BigDecimal supplyElectronic = new BigDecimal("0"); BigDecimal proportionPartner = new BigDecimal("0"); BigDecimal proportionMoney = new BigDecimal("0"); BigDecimal totalElectronic = new BigDecimal("0"); BigDecimal totalService = new BigDecimal("0"); BigDecimal servicePartner = new BigDecimal("0"); BigDecimal serviceMoney = new BigDecimal("0"); BigDecimal sharingAmount = new BigDecimal("0"); BigDecimal commissionAmount = new BigDecimal("0"); BigDecimal electrovalence = new BigDecimal("0"); BigDecimal serviceCharge = new BigDecimal("0"); BigDecimal orderCommission = new BigDecimal("0"); BigDecimal vipDiscount = new BigDecimal("0"); BigDecimal couponDiscount = new BigDecimal("0"); // tSettlementConfirm1.setIncomePercentage(); // tSettlementConfirm1.setTotalPercentage(); tSettlementConfirm1.setElectronicRefund(0); // 上月成本合计 BigDecimal beforeCost= new BigDecimal("0"); // 上月利润合计 BigDecimal beforeIncome= new BigDecimal("0"); int i = 1; for (TSettlementConfirm tSettlementConfirm : list1) { tSettlementConfirm.setXuhao(i); tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic()); List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData(); if (!data1.isEmpty()){ tSettlementConfirm.setSiteName(data1.get(0).getName()); } if (tSettlementConfirm.getMeteringElectronic()!=null){ meteringElectronic = meteringElectronic.add(tSettlementConfirm.getMeteringElectronic()); chargingElectronic = chargingElectronic.add(tSettlementConfirm.getChargingElectronic()); } if (tSettlementConfirm.getLossElectronic()!=null){ lossElectronic = lossElectronic.add(tSettlementConfirm.getLossElectronic()); } income = income.add(tSettlementConfirm.getIncome()); venue = venue.add(tSettlementConfirm.getVenue()); metering = metering.add(tSettlementConfirm.getMetering()); clean = clean.add(tSettlementConfirm.getClean()); maintain = maintain.add(tSettlementConfirm.getMaintain()); cost = cost.add(tSettlementConfirm.getCost()); profitMoney = profitMoney.add(tSettlementConfirm.getProfitMoney()); newMoney = newMoney.add(tSettlementConfirm.getNewMoney()); newSettlement = newSettlement.add(tSettlementConfirm.getNewSettlement()); supplyElectronic = supplyElectronic.add(tSettlementConfirm.getSupplyElectronic()); proportionPartner = proportionPartner.add(tSettlementConfirm.getProportionPartner()); proportionMoney = proportionMoney.add(tSettlementConfirm.getProportionMoney()); totalElectronic = totalElectronic.add(tSettlementConfirm.getTotalElectronic()); totalService = totalService.add(tSettlementConfirm.getTotalService()); servicePartner = servicePartner.add(tSettlementConfirm.getServicePartner()); serviceMoney = serviceMoney.add(tSettlementConfirm.getServiceMoney()); sharingAmount = sharingAmount.add(tSettlementConfirm.getSharingAmount()); commissionAmount = commissionAmount.add(tSettlementConfirm.getCommissionAmount()); electrovalence = electrovalence.add(tSettlementConfirm.getElectrovalence()); serviceCharge = serviceCharge.add(tSettlementConfirm.getServiceCharge()); orderCommission = orderCommission.add(tSettlementConfirm.getOrderCommission()); vipDiscount = vipDiscount.add(tSettlementConfirm.getVipDiscount()); couponDiscount = couponDiscount.add(tSettlementConfirm.getCouponDiscount()); // 查询结算确认单开始时间和结束时间的单子 QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() .eq("site_id", tSettlementConfirm.getSiteId()) .eq("recharge_payment_status",2); switch (tSettlementConfirm.getType()){ case 1: eq.between("start_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime()); break; case 2: eq.between("end_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime()); break; } List<TChargingOrder> tChargingOrders = this.baseMapper.selectList(eq); Map<String,TChargingOrder> map = new HashMap<>(); StringBuilder stringBuilder = new StringBuilder(); for (TChargingOrder tChargingOrder : tChargingOrders) { stringBuilder.append(tChargingOrder.getCode()).append(","); } // 充电总时长 Long temp = 1L; if (StringUtils.hasLength(stringBuilder.toString())){ String substring = stringBuilder.substring(0, stringBuilder.length() - 1); for (String s : substring.split(",")) { UploadRealTimeMonitoringData data6 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(s).getData(); if (data6!=null){ temp+=(data6.getCumulative_charging_time()*60); } } } List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData(); // 计算充电桩的功率平均值 BigDecimal bigDecimal = new BigDecimal("0"); for (TChargingPile datum : data) { bigDecimal = bigDecimal.add(datum.getRatedPower()); } tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge())); //利用率=充电量/(桩数量*功率*时间) List<TChargingPile> data2 = chargingPileClient.getChargingPileBySiteId(tSettlementConfirm.getSiteId()).getData(); BigDecimal bigDecimal2 = new BigDecimal("0"); if (data2!=null && (!data2.isEmpty())){ for (TChargingPile tChargingPile : data2) { bigDecimal2 = bigDecimal2.add(tChargingPile.getRatedPower()); } BigDecimal bigDecimal1 = new BigDecimal(data2.size()+""); // 平均功率 BigDecimal divide = bigDecimal2.divide(bigDecimal1, 2, RoundingMode.HALF_DOWN); // 充电量 BigDecimal chargingElectronic1 = tSettlementConfirm.getChargingElectronic(); // 桩数量 BigDecimal bigDecimal3 = new BigDecimal(data2.size()); BigDecimal multiply = chargingElectronic1.multiply(new BigDecimal("24")); BigDecimal multiply1 = bigDecimal3.multiply(divide).multiply(new BigDecimal(temp)); tSettlementConfirm.setRate(chargingElectronic1.divide(multiply1,2,RoundingMode.HALF_DOWN)+""); }else{ tSettlementConfirm.setRate(""); } for (TSettlementConfirm settlementConfirm : list2) { int value = parse.getMonth().getValue(); settlementConfirm.setMonth(value); settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge())); tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic()); if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){ // 电站相同比较收入涨幅跌幅 if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO)>0){ BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(),2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")); tSettlementConfirm.setIncomePercentage(subtract+"%"); }else { tSettlementConfirm.setIncomePercentage("100"+"%"); } // 比较总利润 收入合计-成本合计 BigDecimal subtract1 = tSettlementConfirm.getIncome().subtract(tSettlementConfirm.getCost()); BigDecimal subtract2 = settlementConfirm.getIncome().subtract(settlementConfirm.getCost()); BigDecimal bigDecimal1 = subtract1.subtract(subtract2) .divide(subtract2, 2, RoundingMode.HALF_DOWN) .multiply(new BigDecimal("100")) .setScale(2, RoundingMode.HALF_DOWN); tSettlementConfirm.setTotalPercentage(bigDecimal1+"%"); } beforeCost = beforeCost.add(settlementConfirm.getCost()); beforeIncome = beforeIncome.add(settlementConfirm.getIncome()); } i++; } TSettlementConfirm tSettlementConfirm = new TSettlementConfirm(); tSettlementConfirm.setMonth(parse.getMonthValue()); tSettlementConfirm.setMeteringElectronic(meteringElectronic); tSettlementConfirm.setChargingElectronic(chargingElectronic); tSettlementConfirm.setLossElectronic(lossElectronic); tSettlementConfirm.setIncome(income); tSettlementConfirm.setVenue(venue); tSettlementConfirm.setMetering(metering); tSettlementConfirm.setClean(clean); tSettlementConfirm.setMaintain(maintain); tSettlementConfirm.setCost(cost); tSettlementConfirm.setProfitMoney(profitMoney); tSettlementConfirm.setNewMoney(newMoney); tSettlementConfirm.setNewSettlement(newSettlement); tSettlementConfirm.setSupplyElectronic(supplyElectronic); tSettlementConfirm.setProportionPartner(proportionPartner); tSettlementConfirm.setProportionMoney(proportionMoney); tSettlementConfirm.setTotalElectronic(totalElectronic); tSettlementConfirm.setTotalService(totalService); tSettlementConfirm.setServicePartner(servicePartner); tSettlementConfirm.setServiceMoney(serviceMoney); tSettlementConfirm.setSharingAmount(sharingAmount); tSettlementConfirm.setCommissionAmount(commissionAmount); tSettlementConfirm.setElectrovalence(electrovalence); tSettlementConfirm.setServiceCharge(serviceCharge); tSettlementConfirm.setOrderCommission(orderCommission); tSettlementConfirm.setVipDiscount(vipDiscount); tSettlementConfirm.setCouponDiscount(couponDiscount); // 本月 if (beforeIncome.compareTo(new BigDecimal("0")) == 0){ tSettlementConfirm.setIncomePercentage(0+"%"); tSettlementConfirm.setIncomePercentage(0+"%"); }else{ BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome,2,RoundingMode.HALF_DOWN).multiply(new BigDecimal("100")); tSettlementConfirm.setIncomePercentage(subtract+"%"); tSettlementConfirm.setIncomePercentage(subtract+"%"); } // 比较总利润 收入合计-成本合计 BigDecimal subtract1 = income.subtract(cost); BigDecimal subtract2 = beforeIncome.subtract(beforeCost); if (subtract2.compareTo(new BigDecimal("0")) == 0){ tSettlementConfirm.setTotalPercentage(0+"%"); }else{ tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2,2, RoundingMode.HALF_DOWN).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%"); } tSettlementConfirm.setElectronicRefund(0); // 查询上次汇报数据 进行比对涨幅跌幅 total.add(tSettlementConfirm); res.setList1(list1); res.setList2(total); return res; } @Override public SettlementTotalVO settlementTotalR(String time,Long userId) { //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); if (userId != null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } SettlementTotalVO res = new SettlementTotalVO(); List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time,siteIds); LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 减少一个月 LocalDateTime minus = parse.minusMonths(1); List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time,siteIds); // 合计 List<TSettlementConfirm> total = new ArrayList<>(); ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingBillMapper.xml
@@ -18,6 +18,12 @@ <if test="req.uid != null and req.uid!=''"> and t1.id = #{req.uid} </if> <if test="null != req.siteIds and req.siteIds.size()>0" > and t1.site_id in <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> and t1.billType = 1 and t1.del_flag = 0 order by t1.create_time desc @@ -37,6 +43,12 @@ <if test="req.uid != null and req.uid!=''"> and t1.id = #{req.uid} </if> <if test="null != req.siteIds and req.siteIds.size()>0" > and t1.site_id in <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> and t1.billType = 2 and t1.del_flag = 0 </select> ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -86,6 +86,12 @@ #{item} </foreach> </if> <if test="null != req.siteIds and req.siteIds.size()>0" > and t1.site_id in <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> <if test="req.orderType != null "> and t1.order_type = #{req.orderType} </if> @@ -311,7 +317,12 @@ <if test="chargingPercentProvinceDto.provinceCode != null"> AND ts.province_code = #{chargingPercentProvinceDto.provinceCode} </if> <if test="chargingPercentProvinceDto.siteIds != null and chargingPercentProvinceDto.siteIds.size() > 0"> AND site_id IN <foreach collection="chargingPercentProvinceDto.siteIds" item="siteId" open="(" separator="," close=")"> #{siteId} </foreach> </if> </where> GROUP BY site_id @@ -867,6 +878,12 @@ #{item} </foreach> </if> <if test="null != req.siteIds and req.siteIds.size()>0" > and t1.site_id in <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> <if test="req.orderType != null "> and t1.order_type = #{req.orderType} </if> ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml
@@ -5,6 +5,12 @@ select t1.* from t_settlement_confirm t1 where 1=1 <if test="null != siteIds and siteIds.size()>0" > and t1.site_id in <foreach collection="siteIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> <if test="time != null and time!='' "> AND DATE_FORMAT(t1.start_time, '%Y-%m') = DATE_FORMAT(#{time}, '%Y-%m') </if> @@ -19,6 +25,12 @@ <if test="req.siteIds != null "> and t1.site_id = #{req.siteIds} </if> <if test="null != req.siteIdss and req.siteIdss.size()>0" > and t1.site_id in <foreach collection="req.siteIdss" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> <if test="req.type == 1 "> <if test="req.startTime != null and req.startTime!=''"> and (t1.start_time between #{req.startTime} and #{req.endTime})