From f2a57f2a9fa309f872d10c7fada992b63a0c0d5f Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期日, 27 十月 2024 20:52:48 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java | 10 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 81 +++++ ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java | 2 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java | 24 - ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java | 3 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java | 8 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java | 2 ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml | 10 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TGrantVip.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java | 9 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java | 2 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 59 +++ ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingGunMapper.xml | 8 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java | 5 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml | 16 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java | 4 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 4 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java | 3 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java | 44 ++ ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 113 +++--- ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 223 ++++++++++++-- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java | 2 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java | 4 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java | 41 +- ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderMapVO.java | 2 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml | 8 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java | 20 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringPageData.java | 25 + ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java | 3 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserApplet.java | 1 ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml | 4 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java | 4 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml | 32 +- ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java | 1 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java | 10 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java | 10 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java | 6 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/RptUtils.java | 33 ++ ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PageChargingOrderAndUploadRealTimeMonitoringDataDto.java | 25 + ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java | 2 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/CarUtil.java | 26 44 files changed, 658 insertions(+), 241 deletions(-) diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java index c311954..9b3752f 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java @@ -38,6 +38,6 @@ @GetMapping("/site/getSiteList/byUserId") R<List<GetSiteListDTO>> getSiteListByUserId(@RequestParam("userId") Long userId); - @GetMapping("/getPartnerR/{id}") + @GetMapping("/partner/getPartnerR/{id}") R<Partner> getPartnerR(@PathVariable("id") Integer id); } diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java index ee3453c..3f5bf8b 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java @@ -44,7 +44,7 @@ } @Override - public R<List<UploadRealTimeMonitoringData>> getAll(MongoChargingOrderQuery mongoChargingOrderQuery) { + public R<UploadRealTimeMonitoringPageData> getAll(MongoChargingOrderQuery mongoChargingOrderQuery) { return null; } }; diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java index aa641de..824cb1f 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java @@ -5,6 +5,7 @@ import com.ruoyi.common.core.dto.MongoChargingOrderQuery; import com.ruoyi.integration.api.factory.UploadRealTimeMonitoringDataFallbackFactory; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; +import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -44,5 +45,5 @@ R<List<UploadRealTimeMonitoringData>> getDataByOrderCode(@RequestParam("code") String code); @PostMapping("/uploadRealTimeMonitoringData/getAll") - R<List<UploadRealTimeMonitoringData>> getAll(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery); + R<UploadRealTimeMonitoringPageData> getAll(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery); } diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java index a3bcc44..5937ecf 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java @@ -21,6 +21,7 @@ public class ChargingOrderAndUploadRealTimeMonitoringDataDto extends BaseModel { private String id; + private Integer index; private String transaction_serial_number; // 交易流水号 private String charging_pile_code; // 桩编码 private String charging_gun_code; // 抢号 diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PageChargingOrderAndUploadRealTimeMonitoringDataDto.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PageChargingOrderAndUploadRealTimeMonitoringDataDto.java new file mode 100644 index 0000000..7057e39 --- /dev/null +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PageChargingOrderAndUploadRealTimeMonitoringDataDto.java @@ -0,0 +1,25 @@ +package com.ruoyi.integration.api.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 上传实时监测数据 + **/ + +@Data +public class PageChargingOrderAndUploadRealTimeMonitoringDataDto extends BaseModel { + + private List<ChargingOrderAndUploadRealTimeMonitoringDataDto> records; + private Long total; + + +} + + diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringPageData.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringPageData.java new file mode 100644 index 0000000..96fe254 --- /dev/null +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringPageData.java @@ -0,0 +1,25 @@ +package com.ruoyi.integration.api.model; + +import jdk.internal.dynalink.linker.LinkerServices; +import lombok.Data; +import lombok.experimental.Accessors; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 上传实时监测数据 + **/ + +@Data +@Document(collection = "upload_real_time_monitoring_data") //指定要对应的文档名(表名) +@Accessors(chain = true) +public class UploadRealTimeMonitoringPageData extends BaseModel { + Long count; + List<UploadRealTimeMonitoringData> records; + +} + + diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java index b40f900..4f4f81b 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TExchangeOrder.java @@ -31,6 +31,9 @@ @TableId(value = "id", type = IdType.NONE) private Long id; + @ApiModelProperty(value = "地址json") + @TableField("address_json") + private String addressJson; @ApiModelProperty(value = "订单编号") @TableField("code") private String code; diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TGrantVip.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TGrantVip.java index f1958b4..0c997ed 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TGrantVip.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TGrantVip.java @@ -44,6 +44,6 @@ @TableField("vip_id") private Integer vipId; @ApiModelProperty(value = "购买的会员id") - @TableField("vip_id") + @TableField("order_amount") private BigDecimal orderAmount; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java index b1e370b..16a7aea 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java @@ -156,6 +156,10 @@ @TableField("refund_serial_number") private String refundSerialNumber; + @ApiModelProperty(value = "地址json") + @TableField("address_json") + private String addressJson; + @ApiModelProperty(value = "退款成功时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("refund_time") diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java index beebeea..35ebd28 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.java @@ -33,6 +33,9 @@ @ApiModelProperty(value = "主键") @TableId(value = "id", type = IdType.AUTO) private Long id; + @ApiModelProperty(value = "退款状态(1=退款中,2=退款成功)") + @TableField("refund_status") + private Integer refundStatus; @ApiModelProperty(value = "订单编号") @TableField("code") diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java index 7117147..d85c948 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/SettlementListQuery.java @@ -14,7 +14,7 @@ @ApiModelProperty(value = "类型(1=开始,2=结束)") private Integer type; @ApiModelProperty(value = "站点ids 选择全部 不传") - private List<Integer> siteIds; + private Integer siteIds; @ApiModelProperty(value = "合作商id ") private Integer partnerId; @ApiModelProperty(value = "开始时间2020-01-01 00:00:00") @@ -22,4 +22,5 @@ @ApiModelProperty(value = "结束时间2021-01-01 23:59:59") private String endTime; + } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderMapVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderMapVO.java index b2d3618..f9958b4 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderMapVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingOrderMapVO.java @@ -16,4 +16,6 @@ private List<Map<String,Object>> maps; @ApiModelProperty("下方折线图") private List<Map<String,Object>> maps1; + private BigDecimal allMoney; + private BigDecimal commissionAmount; } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserApplet.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserApplet.java index a7161a4..be73042 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserApplet.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserApplet.java @@ -26,6 +26,7 @@ * 用户名id */ private Long userId; + private String userIdStr; /** * 用户手机号 diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java index 7944129..d11a972 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java @@ -138,10 +138,10 @@ // 计算预付金额能充多少度普通电 BigDecimal divide1 = money.divide(electrovalence, 2, BigDecimal.ROUND_HALF_UP); // 计算冲会员电能充多少度会员电 - BigDecimal divide = vipElectrovalence.divide(electrovalence, 2, BigDecimal.ROUND_HALF_UP); + BigDecimal divide = money.divide(vipElectrovalence, 2, BigDecimal.ROUND_HALF_UP); BigDecimal subtract = divide.subtract(divide1); // 优惠金额 - data.setMoney(subtract.multiply(vipElectrovalence).setScale(2, BigDecimal.ROUND_HALF_UP)); + data.setMoney(subtract.multiply(electrovalence.subtract(vipElectrovalence)).setScale(2, BigDecimal.ROUND_HALF_UP)); return AjaxResult.ok(data); } /** diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java index 7f880e2..997ac14 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java @@ -1118,6 +1118,10 @@ public R getModel(String id) throws Exception { String modelById = CarBrandUtil.getModelById(id); JSONObject jsonObject = JSON.parseObject(modelById); + Integer code = jsonObject.getInteger("code"); + if (code==701){ + return R.fail("当前品牌暂无分类"); + } JSONArray data = jsonObject.getJSONArray("data"); JSONArray backList = new JSONArray(); for (Object datum : data) { diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java index 19d5fe3..bd17572 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java @@ -11,6 +11,7 @@ import com.ruoyi.account.mapper.TAppUserMapper; import com.ruoyi.account.service.TAppUserService; import com.ruoyi.account.service.TInviteUserService; +import com.ruoyi.account.util.RptUtils; import com.ruoyi.account.wx.model.WeixinProperties; import com.ruoyi.account.wx.pojo.AppletUserDecodeData; import com.ruoyi.common.core.exception.ServiceException; @@ -18,6 +19,7 @@ import com.ruoyi.system.api.model.LoginUserApplet; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import org.springframework.web.client.RestTemplate; import java.util.HashMap; @@ -69,9 +71,10 @@ break; } } - appUser.setAvatar(appletUserDecodeData.getAvatarUrl()); + + appUser.setAvatar(StringUtils.hasLength(appletUserDecodeData.getAvatarUrl())?appletUserDecodeData.getAvatarUrl():"http://221.182.45.100:8090/2024-10-26/logo.png"); + appUser.setName(StringUtils.hasLength(appletUserDecodeData.getNickName())?appletUserDecodeData.getNickName():RptUtils.around(appletUserDecodeData.getPhoneNumber(),3,4)); appUser.setCity(appletUserDecodeData.getCity()); - appUser.setName(appletUserDecodeData.getNickName()); appUser.setProvince(appletUserDecodeData.getProvince()); appUser.setWxOpenid(appletUserDecodeData.getOpenId()); this.saveOrUpdate(appUser); @@ -113,6 +116,8 @@ } } appUser.setAliOpenid(response.getOpenId()); + appUser.setAvatar("http://221.182.45.100:8090/2024-10-26/logo.png"); + appUser.setName(RptUtils.around(phone,3,4)); this.saveOrUpdate(appUser); if(Objects.nonNull(inviteUserId)){ inviteUserService.saveInviteUser(appUser.getId(), inviteUserId); @@ -154,6 +159,7 @@ LoginUserApplet loginUserApplet = new LoginUserApplet(); if(ObjectUtils.isNotNull(appUser)){ loginUserApplet.setUserId(appUser.getId()); + loginUserApplet.setUserIdStr(appUser.getId().toString()); loginUserApplet.setName(appUser.getName()); loginUserApplet.setPhone(appUser.getPhone()); loginUserApplet.setAvatar(appUser.getAvatar()); diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/CarUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/CarUtil.java index 8087a9e..3da1a3f 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/CarUtil.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/CarUtil.java @@ -877,91 +877,91 @@ " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京B\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京C\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京D\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京E\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京F\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京G\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京H\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京J\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京K\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京L\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京M\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"京Y\",\n" + " \"city\": \"北京\",\n" + " \"province\": \"北京\",\n" + " \"Pcode\": \"BJ\",\n" + - " \"AreaCode\": \"110000\"\n" + + " \"AreaCode\": \"110100\"\n" + " },\n" + " {\n" + " \"Hp\": \"豫A\",\n" + diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/RptUtils.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/RptUtils.java new file mode 100644 index 0000000..41e207a --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/RptUtils.java @@ -0,0 +1,33 @@ +package com.ruoyi.account.util; + +/** + * 脱敏工具类 + */ +public class RptUtils { + private static final String SYMBOL = "*"; + + /** + * 脱敏 + * @param str 待脱敏字符串 + * @param left 左边保留多少位 + * @param right 右边保留多少位 + * @return 脱敏结果,除左右外,其余字符将被替换为* + */ + public static String around(String str, int left, int right){ + if (str == null || (str.length() < left + right +1)){ + return str; + } + String regex = String.format("(?<=\\w{%d})\\w(?=\\w{%d})", left, right); + return str.replaceAll(regex, SYMBOL); + } + + /** + * 正则表达式实现金额数据脱敏 + * @param money + * @return + */ + public static String getMoney(String money){ + //保留0个数到0个结束 + return around(money,0,0); + } + } \ No newline at end of file diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java index 622f1a1..dbd0aa4 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.model.*; @@ -16,16 +18,20 @@ import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; +import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; +import com.ruoyi.other.api.feignClient.VipClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.feignClient.SysUserRoleClient; @@ -88,7 +94,12 @@ @Resource private SysUserRoleClient userRoleClient; - + @Resource + private VipClient vipClient; + @Resource + private TokenService tokenService; + @Resource + private AppUserClient appUserClient; /** @@ -115,14 +126,29 @@ Site byId = siteService.getById(one.getSiteId()); TAccountingStrategy byId1 = accountingStrategyService.getById(byId.getAccountingStrategyId()); List<TAccountingStrategyDetail> list = accountingStrategyDetailService.lambdaQuery().eq(TAccountingStrategyDetail::getAccountingStrategyId, byId1.getId()).list(); + list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59")); for (TAccountingStrategyDetail tAccountingStrategyDetail : list) { // 当前时间属于那个阶段 取哪个阶段的电价 - if(LocalTime.now().isAfter(LocalTime.parse(tAccountingStrategyDetail.getStartTime())) && LocalTime.now().isBefore(LocalTime.parse(tAccountingStrategyDetail.getEndTime()))){ - siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence()); + 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)); if(null != byId1.getDiscount()){ - siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().multiply(byId1.getDiscount()).setScale(4, BigDecimal.ROUND_HALF_UP)); + siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP)); }else{ - siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence()); + // 获取当前登录用户id + Long userId = tokenService.getLoginUserApplet().getUserId(); + // 根据id查询用户信息 + TAppUser appUser = appUserClient.getUserById(userId).getData(); + if(Objects.nonNull(appUser)){ + TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); + if(Objects.nonNull(vip) && vip.getType() == 2){ + siteInfoVO.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(tAccountingStrategyDetail.getServiceCharge()).add(tAccountingStrategyDetail.getElectrovalence())); + }else { + siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence()); + } + }else { + siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence()); + } } } } @@ -145,14 +171,29 @@ Site byId = siteService.getById(one.getSiteId()); TAccountingStrategy byId1 = accountingStrategyService.getById(byId.getAccountingStrategyId()); List<TAccountingStrategyDetail> list = accountingStrategyDetailService.lambdaQuery().eq(TAccountingStrategyDetail::getAccountingStrategyId, byId1.getId()).list(); + list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59")); for (TAccountingStrategyDetail tAccountingStrategyDetail : list) { // 当前时间属于那个阶段 取哪个阶段的电价 - if(LocalTime.now().isAfter(LocalTime.parse(tAccountingStrategyDetail.getStartTime())) && LocalTime.now().isBefore(LocalTime.parse(tAccountingStrategyDetail.getEndTime()))){ - siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence()); + 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)); if(null != byId1.getDiscount()){ - siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().multiply(byId1.getDiscount()).setScale(4, BigDecimal.ROUND_HALF_UP)); + siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP)); }else{ - siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence()); + // 获取当前登录用户id + Long userId = tokenService.getLoginUserApplet().getUserId(); + // 根据id查询用户信息 + TAppUser appUser = appUserClient.getUserById(userId).getData(); + if(Objects.nonNull(appUser)){ + TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); + if(Objects.nonNull(vip) && vip.getType() == 2){ + siteInfoVO.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(tAccountingStrategyDetail.getServiceCharge()).add(tAccountingStrategyDetail.getElectrovalence())); + }else { + siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence()); + } + }else { + siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence()); + } } } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java index 3bd8ac6..9d81853 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java @@ -10,12 +10,14 @@ import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.time.LocalTime; import java.util.List; import java.util.Objects; @@ -100,10 +102,16 @@ public R<TAccountingStrategyDetail> getDetailBySiteId(@RequestParam("siteId") Integer siteId){ Site site = siteService.getById(siteId); TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId()); - TAccountingStrategyDetail one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery() - .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()) - .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time")); - return R.ok(one); + List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery() + .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())); + list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59")); + for (TAccountingStrategyDetail accountingStrategyDetail : list) { + if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0 + && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){ + return R.ok(accountingStrategyDetail); + } + } + return R.ok(); } /** * 通过桩id查询当前时段使用的策略明细 @@ -123,19 +131,31 @@ .eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0) .last("LIMIT 1")); TAccountingStrategy accountingStrategy = accountingStrategyService.getById(chargingGun.getAccountingStrategyId()); - TAccountingStrategyDetail one; + TAccountingStrategyDetail one = null; if(Objects.nonNull(accountingStrategy)){ - one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery() - .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()) - .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time")); + List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery() + .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())); + list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59")); + for (TAccountingStrategyDetail accountingStrategyDetail : list) { + if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0 + && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){ + return R.ok(accountingStrategyDetail); + } + } }else { Site site = siteService.getById(chargingPile.getSiteId()); accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId()); - one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery() - .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId()) - .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time")); + List<TAccountingStrategyDetail> list = accountingStrategyDetailService.list(Wrappers.<TAccountingStrategyDetail>lambdaQuery() + .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())); + list.stream().filter(item -> "00:00".equals(item.getEndTime())).forEach(item -> item.setEndTime("23:59:59")); + for (TAccountingStrategyDetail accountingStrategyDetail : list) { + if(DateUtils.string2LocalTime(accountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0 + && DateUtils.string2LocalTime(accountingStrategyDetail.getEndTime() + ("23:59:59".equals(accountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){ + return R.ok(accountingStrategyDetail); + } + } } - return R.ok(one); + return R.ok(); } /** * 校验充电桩计费模版是否准确 diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java index 3ead497..041fbc6 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java @@ -325,8 +325,8 @@ 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(); - 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) { diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java index e56a27f..aacf87e 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java @@ -328,9 +328,15 @@ } // 查询所有的停车场的站点id List<TParkingLot> list = parkingLotService.list(); - List<Integer> siteIds = list.stream().map(TParkingLot::getSiteId).collect(Collectors.toList()); + List<Integer> siteIds = list.stream().map(TParkingLot::getSiteId).distinct().collect(Collectors.toList()); if(!CollectionUtils.isEmpty(ids) && !CollectionUtils.isEmpty(siteIds)){ - ids.addAll(siteIds); + Iterator<Integer> iterator = ids.iterator(); + while (iterator.hasNext()){ + Integer next = iterator.next(); + if(siteIds.contains(next)){ + iterator.remove(); + } + } } return this.baseMapper.getSiteListParkLot(ids); } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java index 119f6ac..1f67215 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java @@ -18,6 +18,7 @@ import com.ruoyi.common.core.web.page.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.time.LocalDate; @@ -49,6 +50,7 @@ @Override public TParkingRecordPageInfoVO pageList(ParkingRecordQuery query) { + PageInfo<TParkingRecordVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); // 查询站点的停车场id if(Objects.nonNull(query.getSiteId())){ Site site = siteMapper.selectById(query.getSiteId()); @@ -56,11 +58,15 @@ List<TParkingLot> tParkingLots = parkingLotMapper.selectList(Wrappers.lambdaQuery(TParkingLot.class) .eq(TParkingLot::getSiteId, site.getId())); List<Integer> lotIds = tParkingLots.stream().map(TParkingLot::getId).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(lotIds)){ + TParkingRecordPageInfoVO tParkingRecordPageInfoVO = new TParkingRecordPageInfoVO(); + tParkingRecordPageInfoVO.setParkingRecordVOS(new PageInfo<TParkingRecordVO>()); + return tParkingRecordPageInfoVO; + } query.setLotIds(lotIds); } } - PageInfo<TParkingRecordVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); List<TParkingRecordVO> list = this.baseMapper.pageList(query,pageInfo); pageInfo.setRecords(list); // 查询总数 diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml index a1c5267..774e490 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/logback.xml @@ -58,11 +58,11 @@ </appender> <!-- 系统模块日志级别控制 --> - <logger name="com.ruoyi" level="debug" /> + <logger name="com.ruoyi" level="info" /> <!-- Spring日志级别控制 --> <logger name="org.springframework" level="debug" /> - <root level="debug"> + <root level="info"> <appender-ref ref="console" /> </root> diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml index 1073452..934b624 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml @@ -166,7 +166,7 @@ and ts.`name` like CONCAT('%', #{query.name}, '%') </if> <if test="null != query.cityCode and '' != query.cityCode"> - and ts.cityCode = #{query.cityCode} + and ts.city_code = #{query.cityCode} </if> AND ts.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} AND ts.status = ${@com.ruoyi.common.core.enums.status.SiteStatusEnum@NORMAL_USE.getCode()} diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingGunMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingGunMapper.xml index a4e5734..1553995 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingGunMapper.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingGunMapper.xml @@ -88,10 +88,10 @@ <select id="getStatusModeStatistics" resultType="com.ruoyi.chargingPile.api.vo.StatusModeStatisticsVO"> SELECT charge_mode, - 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 + IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 2 AND charge_mode = #{chargeMode} and del_flag = 0),0) AS freeCount, + IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 5 AND charge_mode = #{chargeMode} and del_flag = 0),0) AS filledCount, + IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 3 AND charge_mode = #{chargeMode} and del_flag = 0),0) AS insertCount, + IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 4 AND charge_mode = #{chargeMode} and del_flag = 0),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 ( diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml index c5e4070..7f9c23d 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml @@ -22,16 +22,16 @@ <!-- 通用查询结果列 --> <sql id="Base_Column_List"> - id, app_user_id, license_plate, vehicle_color, charging_order_id, parking_lot_id, in_parking_time, out_parking_time, parking_duration, order_amount, status, out_parking_type, create_time + id, code,app_user_id, license_plate, vehicle_color, charging_order_id, parking_lot_id, in_parking_time, out_parking_time, parking_duration, order_amount, status, out_parking_type, create_time </sql> <select id="getSum" resultType="java.math.BigDecimal"> select sum(timeout_amount) from t_parking_record where in_parking_time >= #{sixBefore} </select> <select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.TParkingRecordVO"> select - tpr.id, tpr.app_user_id, tpr.license_plate, tpr.vehicle_color, tpr.charging_order_id, tpr.parking_lot_id, tpr.in_parking_time, tpr.out_parking_time, - tpr.parking_duration, tpr.order_amount, tpr.status, tpr.out_parking_type, tpr.create_time,(tpr.order_amount - tpr.timeout_amount) as parkingFee, - (tpr.parking_duration - tpr.free_duration) as feeDuration,ts.name as siteName + tpr.id, tpr.code,tpr.app_user_id, tpr.license_plate, tpr.vehicle_color, tpr.charging_order_id, tpr.parking_lot_id, tpr.in_parking_time, tpr.out_parking_time, + tpr.parking_duration, tpr.order_amount, tpr.status, tpr.out_parking_type, tpr.create_time,(tpr.order_amount - tpr.timeout_amount) as parkingFee,tpr.timeout_amount, + tpr.free_duration,(tpr.parking_duration - tpr.free_duration) as feeDuration,ts.name as siteName from t_parking_record tpr left join t_parking_lot tpl on tpr.parking_lot_id = tpl.id left join t_site ts on tpl.site_id = ts.id diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java index f9c9725..e2a7f77 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java @@ -2,6 +2,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; +import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.common.core.dto.MongoChargingOrderQuery; import org.springframework.web.bind.annotation.*; @@ -73,8 +74,8 @@ @PostMapping(value = "/getAll") - public R<List<UploadRealTimeMonitoringData>> getAll(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery) throws ParseException { - List<UploadRealTimeMonitoringData> list = uploadRealTimeMonitoringDataService.getDataAll(mongoChargingOrderQuery); + public R<UploadRealTimeMonitoringPageData> getAll(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery) throws ParseException { + UploadRealTimeMonitoringPageData list = uploadRealTimeMonitoringDataService.getDataAll(mongoChargingOrderQuery); return R.ok(list); } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java index 2c998d6..c5b2e12 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java @@ -1,6 +1,7 @@ package com.ruoyi.integration.mongodb.service; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; +import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData; import com.ruoyi.integration.mongodb.base.BaseService; import com.ruoyi.common.core.dto.MongoChargingOrderQuery; @@ -15,7 +16,7 @@ * @return */ List<UploadRealTimeMonitoringData> getDataByOrderCode(String code); - List<UploadRealTimeMonitoringData> getDataAll(MongoChargingOrderQuery mongoChargingOrderQuery) throws ParseException; + UploadRealTimeMonitoringPageData getDataAll(MongoChargingOrderQuery mongoChargingOrderQuery) throws ParseException; /** * 查询订单最新一条数据 diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java index 886759b..42fbedb 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java @@ -3,6 +3,7 @@ import cn.hutool.db.sql.Direction; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; +import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData; import com.ruoyi.integration.iotda.constant.IotConstant; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; import com.ruoyi.common.core.dto.MongoChargingOrderQuery; @@ -61,7 +62,7 @@ } @Override - public List<UploadRealTimeMonitoringData> getDataAll(MongoChargingOrderQuery mongoChargingOrderQuery) throws ParseException { + public UploadRealTimeMonitoringPageData getDataAll(MongoChargingOrderQuery mongoChargingOrderQuery) throws ParseException { Query query = new Query(); // if (!values.isEmpty()){ // query.addCriteria(Criteria.where("transaction_serial_number").in(values)); @@ -70,10 +71,10 @@ query.addCriteria(Criteria.where("transaction_serial_number").regex(mongoChargingOrderQuery.getCode(), "i")); // "i" 表示不区分大小写 } if (mongoChargingOrderQuery.getOrderType() !=null){ - query.addCriteria(Criteria.where("order_type").is(mongoChargingOrderQuery.getOrderType())); + query.addCriteria(Criteria.where("orderType").is(mongoChargingOrderQuery.getOrderType())); } if (mongoChargingOrderQuery.getSiteId() != null){ - query.addCriteria(Criteria.where("site_id").is(mongoChargingOrderQuery.getSiteId())); + query.addCriteria(Criteria.where("siteId").is(mongoChargingOrderQuery.getSiteId())); } if (mongoChargingOrderQuery.getChargingPileCode() != null && !mongoChargingOrderQuery.getChargingPileCode().isEmpty()) { query.addCriteria(Criteria.where("charging_pile_code").is(mongoChargingOrderQuery.getChargingPileCode())); @@ -110,11 +111,18 @@ // 设置分页 Pageable pageable = PageRequest.of(mongoChargingOrderQuery.getPageCurr(), mongoChargingOrderQuery.getPageSize()); query.with(pageable); - + query.with(Sort.by(Sort.Direction.DESC,"create_time")); List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = mongoTemplate.find( - query.with(Sort.by("create_time")) + query , UploadRealTimeMonitoringData.class); - return uploadRealTimeMonitoringData; + + + long totalElements = mongoTemplate.count(query, UploadRealTimeMonitoringData.class); + + UploadRealTimeMonitoringPageData uploadRealTimeMonitoringPageData = new UploadRealTimeMonitoringPageData(); + uploadRealTimeMonitoringPageData.setCount(totalElements); + uploadRealTimeMonitoringPageData.setRecords(uploadRealTimeMonitoringData); + return uploadRealTimeMonitoringPageData; } @Override diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index 1a968ba..4046d55 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java @@ -3,6 +3,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.DecimalFormat; import java.time.*; @@ -26,10 +27,12 @@ import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.integration.api.model.PageChargingOrderAndUploadRealTimeMonitoringDataDto; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.common.security.utils.SecurityUtils; 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.model.*; import com.ruoyi.order.api.query.ChargingOrderQuery; import com.ruoyi.common.core.dto.MongoChargingOrderQuery; @@ -790,45 +793,50 @@ @PostMapping(value = "/watch/chargingOrder") @ApiOperation(value = "监控订单", tags = {"管理后台-订单管理"}) public R watchChargingOrder(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery) { -// Integer page = dto.getPageCurr(); -// Integer pageSize = dto.getPageSize(); -// List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData(); -// dto.setUserIds(data); -// dto.setPageCurr(1); -// dto.setPageSize(99999); -// Map<String,TChargingOrder> map = new HashMap<>(); -// //吧list放入map中 -// for (ChargingOrderVO record : res.getList().getRecords()) { -// map.put(record.getCode(),record); -// } -// Set<String> strings = map.keySet(); - - - List<UploadRealTimeMonitoringData> data1 = uploadRealTimeMonitoringDataClient.getAll(mongoChargingOrderQuery).getData(); + mongoChargingOrderQuery.setPageSize(10); + UploadRealTimeMonitoringPageData data1 = uploadRealTimeMonitoringDataClient.getAll(mongoChargingOrderQuery).getData(); List<ChargingOrderAndUploadRealTimeMonitoringDataDto> dtos = new ArrayList<>(); Map<String,ChargingOrderVO> map = new HashMap<>(); - for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data1) { + for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data1.getRecords()) { ChargingOrderAndUploadRealTimeMonitoringDataDto dataDto = new ChargingOrderAndUploadRealTimeMonitoringDataDto(); ChargingOrderQuery dto = new ChargingOrderQuery(); dto.setCode(uploadRealTimeMonitoringData.getTransaction_serial_number()); - TCharingOrderVO vo = chargingOrderService.chargingOrder(dto); - if (!vo.getList().getRecords().isEmpty()) { - ChargingOrderVO chargingOrderVO = vo.getList().getRecords().get(0); - if (chargingOrderVO != null) { - BeanUtils.copyProperties(chargingOrderVO, dataDto); - } - BeanUtils.copyProperties(uploadRealTimeMonitoringData,dataDto); - dtos.add(dataDto); + 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); + dataDto.setStartTime(uploadRealTimeMonitoringData.getStartTime()); + dataDto.setEndTime(uploadRealTimeMonitoringData.getEndTime() == null ? null : uploadRealTimeMonitoringData.getEndTime()); + dataDto.setStatus(uploadRealTimeMonitoringData.getStatus()); + dtos.add(dataDto); + } }else { - continue; + 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); } } + for (int i = 0; i < dtos.size(); i++) { + dtos.get(i).setIndex(i); + } + PageChargingOrderAndUploadRealTimeMonitoringDataDto page = new PageChargingOrderAndUploadRealTimeMonitoringDataDto(); + page.setTotal(data1.getCount()); + page.setRecords(dtos); - return R.ok(dtos); + return R.ok(page); } @@ -921,25 +929,165 @@ if (statisticsQueryDto.getDayType()==1){ List<Map<String,Object>> maps1 = chargingOrderService.getDateData(chargingOrderIds); - tCharingOrderMapVO.setMaps1(maps1); + + List<Map<String, Object>> charMap = new ArrayList<>(); + // 生成从 "00:00" 到 "23:00" 的时间数据 + for (int hour = 0; hour < 24; hour++) { + String time = String.format("%02d:00", hour); + Map<String, Object> mapWithTimeValue = findMapWithTimeValue(maps1, time); + if (mapWithTimeValue!=null){ + charMap.add(mapWithTimeValue); + }else { + Map<String, Object> timeMap = new HashMap<>(); + timeMap.put("time", time); // 初始化值为 null + timeMap.put("electrovalence", 0); + timeMap.put("orderCount", 0); + timeMap.put("paymentAmount", 0); + timeMap.put("paymoney", 0); + timeMap.put("servicecharge", 0); + + charMap.add(timeMap); + } + } + + tCharingOrderMapVO.setMaps1(charMap); }else if (statisticsQueryDto.getDayType()==2){ + + + List<Map<String,Object>> maps1 = chargingOrderService.getWeekData(chargingOrderIds); - tCharingOrderMapVO.setMaps1(maps1); + + LocalDate startDate = statisticsQueryDto.getStartTime(); + LocalDate endDate = statisticsQueryDto.getEndTime(); + + List<Map<String, Object>> dateRangeStatistics = new ArrayList<>(); + + // 遍历日期范围 + while (!startDate.isAfter(endDate)) { + String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + Map<String, Object> dailyStats = findMapWithDateValue(maps1, formattedDate); + + if (dailyStats != null) { + dateRangeStatistics.add(dailyStats); + } else { + Map<String, Object> dateMap = new HashMap<>(); + dateMap.put("time", formattedDate); + dateMap.put("electrovalence", 0); + dateMap.put("orderCount", 0); + dateMap.put("paymentAmount", 0); + dateMap.put("paymoney", 0); + dateMap.put("servicecharge", 0); + dateRangeStatistics.add(dateMap); + } + + // 移动到下一天 + startDate = startDate.plusDays(1); + } + tCharingOrderMapVO.setMaps1(dateRangeStatistics); }else if (statisticsQueryDto.getDayType()==3){ List<Map<String,Object>> maps1 = chargingOrderService.getMonthData(chargingOrderIds); - tCharingOrderMapVO.setMaps1(maps1); + + LocalDate startDate = statisticsQueryDto.getStartTime(); + LocalDate endDate = statisticsQueryDto.getEndTime(); + + List<Map<String, Object>> dateRangeStatistics = new ArrayList<>(); + + // 遍历日期范围 + while (!startDate.isAfter(endDate)) { + String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + Map<String, Object> dailyStats = findMapWithDateValue(maps1, formattedDate); + + if (dailyStats != null) { + dateRangeStatistics.add(dailyStats); + } else { + Map<String, Object> dateMap = new HashMap<>(); + dateMap.put("time", formattedDate); + dateMap.put("electrovalence", 0); + dateMap.put("orderCount", 0); + dateMap.put("paymentAmount", 0); + dateMap.put("paymoney", 0); + dateMap.put("servicecharge", 0); + dateRangeStatistics.add(dateMap); + } + + // 移动到下一天 + startDate = startDate.plusDays(1); + } + tCharingOrderMapVO.setMaps1(dateRangeStatistics); }else if (statisticsQueryDto.getDayType()==4){ List<Map<String,Object>> maps1 = chargingOrderService.getYearData(chargingOrderIds); - tCharingOrderMapVO.setMaps1(maps1); + + LocalDate startDate = statisticsQueryDto.getStartTime(); + LocalDate endDate = statisticsQueryDto.getEndTime(); + + List<Map<String, Object>> dateRangeStatistics = new ArrayList<>(); + + // 遍历日期范围 + while (!startDate.isAfter(endDate)) { + String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + Map<String, Object> dailyStats = findMapWithDateValue(maps1, formattedDate); + + if (dailyStats != null) { + dateRangeStatistics.add(dailyStats); + } else { + Map<String, Object> dateMap = new HashMap<>(); + dateMap.put("time", formattedDate); + dateMap.put("electrovalence", 0); + dateMap.put("orderCount", 0); + dateMap.put("paymentAmount", 0); + dateMap.put("paymoney", 0); + dateMap.put("servicecharge", 0); + dateRangeStatistics.add(dateMap); + } + + // 移动到下一天 + startDate = startDate.plusDays(1); + } + tCharingOrderMapVO.setMaps1(dateRangeStatistics); }else if (statisticsQueryDto.getDayType()==5){ List<Map<String,Object>> maps1 = chargingOrderService.getByDate(chargingOrderIds); - tCharingOrderMapVO.setMaps1(maps1); + + LocalDate startDate = statisticsQueryDto.getStartTime(); + LocalDate endDate = statisticsQueryDto.getEndTime(); + + List<Map<String, Object>> dateRangeStatistics = new ArrayList<>(); + + // 遍历日期范围 + while (!startDate.isAfter(endDate)) { + String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + Map<String, Object> dailyStats = findMapWithDateValue(maps1, formattedDate); + + if (dailyStats != null) { + dateRangeStatistics.add(dailyStats); + } else { + Map<String, Object> dateMap = new HashMap<>(); + dateMap.put("time", formattedDate); + dateMap.put("electrovalence", 0); + dateMap.put("orderCount", 0); + dateMap.put("paymentAmount", 0); + dateMap.put("paymoney", 0); + dateMap.put("servicecharge", 0); + dateRangeStatistics.add(dateMap); + } + + // 移动到下一天 + startDate = startDate.plusDays(1); + } + tCharingOrderMapVO.setMaps1(dateRangeStatistics); } tCharingOrderMapVO.setMaps(maps); + BigDecimal allMoney = new BigDecimal(0); + for (Map<String, Object> map : maps) { + BigDecimal periodElectricPrice = (BigDecimal) map.get("period_electric_price"); + allMoney = allMoney.add(periodElectricPrice); + BigDecimal total_amount = (BigDecimal) map.get("total_amount"); + allMoney = allMoney.add(total_amount); + } + allMoney = allMoney.multiply(new BigDecimal("0.006")); - + tCharingOrderMapVO.setAllMoney(allMoney); return R.ok(tCharingOrderMapVO); } @@ -1227,8 +1375,8 @@ return R.ok(tCharingUserEquimentVO); } - - private static double calculateAveragePercent(List<Map<String, Object>> mapList1, List<Map<String, Object>> mapList2) { + private static final DecimalFormat DF = new DecimalFormat("#.00"); + public static double calculateAveragePercent(List<Map<String, Object>> mapList1, List<Map<String, Object>> mapList2) { int totalElements = mapList1.size() + mapList2.size(); double sum = 0.0; @@ -1250,7 +1398,10 @@ } // 计算平均值 - return sum / totalElements; + double average = sum / totalElements; + + // 格式化为两位小数 + return Double.parseDouble(DF.format(average)); } @ResponseBody @@ -1280,7 +1431,7 @@ //当日的订单总数 int size = list.size(); //计算list中paymentAmount的总和 - BigDecimal totalPaymentAmount = list.stream().map(TChargingOrder::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal totalPaymentAmount = list.stream().map(TChargingOrder::getPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add); //计算list中electrovalence的总和 BigDecimal totalElectrovalence = list.stream().map(TChargingOrder::getElectrovalence).reduce(BigDecimal.ZERO, BigDecimal::add); //计算list中serviceCharge的总和 diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java index f686282..9dadd2f 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java @@ -3,7 +3,9 @@ import java.time.LocalDateTime; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.account.api.feignClient.AppUserAddressClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUserAddress; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; @@ -266,6 +268,8 @@ return R.ok(exchangeOrderService.lambdaQuery().eq(TExchangeOrder::getCouponId,goodId).eq(TExchangeOrder::getAppUserId,userId).ne(TExchangeOrder::getStatus,4).count()); } } + @Resource + private AppUserAddressClient appUserAddressClient; @PostMapping("/create") public R<ExchangeBackDto> exchangeCreate(@RequestBody ExchangeDto exchangeDto){ @@ -289,10 +293,15 @@ } tExchangeOrder.setCreateTime(LocalDateTime.now()); tExchangeOrder.setDelFlag(false); + + TAppUserAddress data = appUserAddressClient.getAppUserAddressById(exchangeDto.getAddressId()).getData(); + tExchangeOrder.setAddressJson(JSON.toJSONString(data)); + exchangeOrderService.save(tExchangeOrder); ExchangeBackDto exchangeBackDto = new ExchangeBackDto(); exchangeBackDto.setId(tExchangeOrder.getId()); exchangeBackDto.setCode(tExchangeOrder.getCode()); + return R.ok(exchangeBackDto); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java index 8b7a5c7..8d1ff8f 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java @@ -127,7 +127,7 @@ @ApiImplicitParam(value = "订单id", name = "orderId", required = true), @ApiImplicitParam(value = "订单类型(1=充电订单,2=购物订单,3=兑换订单,4=会员订单)", name = "orderType", required = true), }) - public AjaxResult<OrderEvaluateVo> getOrderEvaluate(Integer orderId, Integer orderType){ + public AjaxResult<OrderEvaluateVo> getOrderEvaluate(String orderId, Integer orderType){ OrderEvaluateVo orderEvaluate = orderEvaluateService.getOrderEvaluate(orderId, orderType); return AjaxResult.success(orderEvaluate); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java index 3158616..68f7c00 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java @@ -5,9 +5,11 @@ import java.time.LocalDateTime; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.ruoyi.account.api.feignClient.AppCouponClient; +import com.ruoyi.account.api.feignClient.AppUserAddressClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUserAddress; import com.ruoyi.common.core.domain.R; @@ -347,7 +349,9 @@ List<MyShoppingOrderList> list = shoppingOrderService.getNoInvoicedOrder(query); return AjaxResult.success(list); } - + + @Resource + private AppUserAddressClient appUserAddressClient; @PostMapping("/create") public R<TShoppingOrder> shopCreate(@RequestBody ExchangeDto exchangeDto) { TShoppingOrder shoppingOrder = new TShoppingOrder(); @@ -380,6 +384,10 @@ shoppingOrder.setPhone(exchangeDto.getPhone()); shoppingOrder.setCreateTime(LocalDateTime.now()); shoppingOrder.setDelFlag(false); + + + TAppUserAddress data = appUserAddressClient.getAppUserAddressById(exchangeDto.getAddressId()).getData(); + shoppingOrder.setAddressJson(JSON.toJSONString(data)); shoppingOrderService.save(shoppingOrder); return R.ok(shoppingOrder); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java index 2aa61b3..8444a5b 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java @@ -69,7 +69,7 @@ * @param orderId * @return */ - OrderEvaluateVo getOrderEvaluate(Integer orderId, Integer orderType); + OrderEvaluateVo getOrderEvaluate(String orderId, Integer orderType); List<Map<String, Object>> goodTop(List<Integer> siteIds); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java index ec09c8b..22f1e35 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java @@ -217,27 +217,28 @@ if (data5.getTime_remaining()!=null){ chargingSecond+=data5.getTime_remaining()*60; } + Integer cumulativeChargingTime = data5.getCumulative_charging_time(); + // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟 + if (cumulativeChargingTime!=null){ + // 计算小时、分钟和秒 + int hours = cumulativeChargingTime / 60; + int minutes = cumulativeChargingTime % 60; + int seconds = 0; // 如果没有秒数,则默认是0 + StringBuilder result = new StringBuilder(); + if (hours > 0) { + result.append(hours).append("小时"); + } + if (minutes > 0) { + result.append(minutes).append("分钟"); + } + if (seconds > 0 || result.length() == 0) { // 如果秒数大于0,或者小时和分钟都为0,则显示秒数 + result.append(seconds).append("秒"); + } + tChargingOrder.setChargingTime(result.toString()); + } + tChargingOrder.setEndSoc(data5.getSoc().toString()); } - Integer cumulativeChargingTime = data5.getCumulative_charging_time(); - // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟 - if (cumulativeChargingTime!=null){ - // 计算小时、分钟和秒 - int hours = cumulativeChargingTime / 60; - int minutes = cumulativeChargingTime % 60; - int seconds = 0; // 如果没有秒数,则默认是0 - StringBuilder result = new StringBuilder(); - if (hours > 0) { - result.append(hours).append("小时"); - } - if (minutes > 0) { - result.append(minutes).append("分钟"); - } - if (seconds > 0 || result.length() == 0) { // 如果秒数大于0,或者小时和分钟都为0,则显示秒数 - result.append(seconds).append("秒"); - } - 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(); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index e64bf42..e7152ca 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -2064,6 +2064,10 @@ private TShoppingOrderService shoppingOrderService; @Resource private TShoppingOrderRefundService shoppingOrderRefundService; + @Resource + private TVipOrderService vipOrderService; + @Resource + private TVipOrderRefundService vipOrderRefundService; @Override public R payRefund(PayOrderRefundDto payOrderQueryDto) { if (payOrderQueryDto.getType()==1){ @@ -2198,6 +2202,71 @@ } } + + if (payOrderQueryDto.getType()==3){ + TVipOrder tChargingOrder = vipOrderService.getById(payOrderQueryDto.getOrderId()); + if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){ + return R.fail("退款金额需小于支付金额"); + } + TVipOrderRefund chargingOrderRefund = new TVipOrderRefund(); + chargingOrderRefund.setVipOrderId(tChargingOrder.getId()); + chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount()); + chargingOrderRefund.setRefundStatus(1); + chargingOrderRefund.setPayType(tChargingOrder.getPaymentType()); + chargingOrderRefund.setRefundTime(LocalDateTime.now()); + chargingOrderRefund.setCode(tChargingOrder.getCode()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue())); + chargingOrderRefund.setRefundTitle("后台退款"); + chargingOrderRefund.setRefundContent("后台退款"); + chargingOrderRefund.setRefundReason("后台退款"); + chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark()); + chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount())); + chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount()); + + if(1 == tChargingOrder.getPaymentType()){ + WxPaymentRefundModel model = new WxPaymentRefundModel(); + model.setOut_trade_no(tChargingOrder.getCode()); + model.setOut_refund_no(chargingOrderRefund.getRefundCode()); + model.setTransaction_id(tChargingOrder.getSerialNumber()); + model.setReason("取消订单"); + model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund"); + WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); + amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue()); + amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue()); + amount.setCurrency("CNY"); + model.setAmount(amount); + R<String> orderR = wxPaymentClient.refundOrderR(model); + if(200 == orderR.getCode()){ + tChargingOrder.setRefundStatus(2); + tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + vipOrderService.updateById(tChargingOrder); + vipOrderRefundService.save(chargingOrderRefund); + } + } + + if(2 == tChargingOrder.getPaymentType()){ + RefundReq dto = new RefundReq(); + dto.setOutTradeNo(tChargingOrder.getCode()); + dto.setOutRequestNo(tChargingOrder.getCode()); + dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString()); + dto.setRefundReason("取消订单"); + RefundResp resp = aliPaymentClient.refund(dto).getData(); + if(null != resp){ + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE"); + + tChargingOrder.setRefundStatus(2); + tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + + + vipOrderService.updateById(tChargingOrder); + + vipOrderRefundService.save(chargingOrderRefund); + + } + } + + } @@ -2375,6 +2444,18 @@ @Override public PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto) { + if (StringUtils.hasLength(dto.getStartTime())){ + dto.setType(1); + String[] split = dto.getStartTime().split(" - "); + dto.setStartTime(split[0]); + dto.setEndTime(split[1]); + } + if (StringUtils.hasLength(dto.getEndTime())){ + dto.setType(2); + String[] split = dto.getStartTime().split(" - "); + dto.setStartTime(split[0]); + dto.setEndTime(split[1]); + } PageInfo<TSettlementConfirm> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); List<TSettlementConfirm> list = tSettlementConfirmMapper.settlementList(pageInfo,dto); for (TSettlementConfirm tSettlementConfirm : list) { diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java index b0b28a0..2366b45 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java @@ -371,7 +371,7 @@ * @return */ @Override - public OrderEvaluateVo getOrderEvaluate(Integer orderId, Integer orderType) { + public OrderEvaluateVo getOrderEvaluate(String orderId, Integer orderType) { TOrderEvaluate orderEvaluate = this.getOne(new LambdaQueryWrapper<TOrderEvaluate>().eq(TOrderEvaluate::getOrderId, orderId).eq(TOrderEvaluate::getOrderType, orderType)); if(null != orderEvaluate){ OrderEvaluateVo orderEvaluateVo = new OrderEvaluateVo(); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java index dba9058..a4aed6f 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java @@ -296,9 +296,9 @@ } e.setElectricityTariff(orderInvoiceDetailList.get(0).getElectricityTariff()); e.setAddedServiceTariff(orderInvoiceDetailList.get(0).getAddedServiceTariff()); - e.setAddedService(orderInvoiceDetailList.stream().filter(t->t.getAddedService()!=null).map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get()); - e.setElectrovalence(orderInvoiceDetailList.stream().filter(t->t.getElectrovalence()!=null).map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get()); - e.setServiceCharge(orderInvoiceDetailList.stream().filter(t->t.getServiceCharge()!=null).map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get()); + e.setAddedService(orderInvoiceDetailList.stream().filter(t->t.getOrderInvoiceId().equals(e.getId()) &&t.getAddedService()!=null).map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get()); + e.setElectrovalence(orderInvoiceDetailList.stream().filter(t->t.getOrderInvoiceId().equals(e.getId()) &&t.getElectrovalence()!=null).map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get()); + e.setServiceCharge(orderInvoiceDetailList.stream().filter(t->t.getOrderInvoiceId().equals(e.getId()) && t.getServiceCharge()!=null).map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get()); }); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java index 82c41ed..674d491 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java @@ -106,7 +106,6 @@ List<TActivityStatisticslVO> list = this.baseMapper.activityStatistics(pageInfo,dto); List<TActivityStatisticslVO> list1 = this.baseMapper.activityStatistics(pageInfo1,dto); - list.sort((o1, o2) -> o2.getCreateTime().compareTo(o1.getCreateTime())); // 优惠券金额 BigDecimal coupon = new BigDecimal("0"); // 会员抵扣金额 @@ -115,7 +114,6 @@ BigDecimal vipActivity = new BigDecimal("0"); // 赠送会员 BigDecimal grantVip = new BigDecimal("0"); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (TActivityStatisticslVO tActivityStatisticslVO : list1) { TAppUser data = appUserClient.getUserById(tActivityStatisticslVO.getAppUserId()).getData(); if (data!=null){ @@ -167,9 +165,7 @@ break; case 3: // 会员订单 优惠金额大于0 - if (tActivityStatisticslVO.getVipDiscountAmount()!=null - && - (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ + if (tActivityStatisticslVO.getVipDiscountAmount()!=null){ vipActivity = vipActivity.add(tActivityStatisticslVO.getVipDiscountAmount()); } tActivityStatisticslVO.setType("会员活动"); @@ -191,7 +187,6 @@ } } for (TActivityStatisticslVO tActivityStatisticslVO : list) { - // 判断享有了哪些类型 switch (tActivityStatisticslVO.getOrderType()){ case 1: @@ -200,12 +195,10 @@ // 充电订单 优惠券金额大于0 if (tActivityStatisticslVO.getCouponDiscountAmount()!=null && - (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ - coupon = coupon.add(tActivityStatisticslVO.getCouponDiscountAmount()); - stringBuilder.append("优惠券抵扣").append("+"); - } + (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ + stringBuilder.append("优惠券抵扣").append("+"); + } if (tActivityStatisticslVO.getVipDiscountAmount()!=null &&(tActivityStatisticslVO.getVipDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ - discount = discount.add(tActivityStatisticslVO.getVipDiscountAmount()); stringBuilder.append("会员抵扣").append("+"); } if (stringBuilder.length()>0){ @@ -221,13 +214,11 @@ if (tActivityStatisticslVO.getCouponDiscountAmount()!=null && (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ - coupon = coupon.add(tActivityStatisticslVO.getCouponDiscountAmount()); stringBuilder1.append("优惠券抵扣").append("+"); } if (tActivityStatisticslVO.getVipDiscountAmount()!=null && (tActivityStatisticslVO.getVipDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ - discount = discount.add(tActivityStatisticslVO.getVipDiscountAmount()); stringBuilder1.append("会员抵扣").append("+"); } if (stringBuilder1.length()>0){ @@ -238,23 +229,16 @@ break; case 3: // 会员订单 优惠金额大于0 - if (tActivityStatisticslVO.getVipDiscountAmount()!=null - && - (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){ - vipActivity = vipActivity.add(tActivityStatisticslVO.getVipDiscountAmount()); - } tActivityStatisticslVO.setType("会员活动"); tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime()); break; case 4: // 赠送会员订单 如果支付金额为0 那么就是后台赠送的会员 if (tActivityStatisticslVO.getPaymentAmount().compareTo(BigDecimal.ZERO)==0){ - grantVip = grantVip.add(tActivityStatisticslVO.getOrderAmount()); tActivityStatisticslVO.setType("赠送会员"); tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime()); }else{ // 赠送 - grantVip = grantVip.add(tActivityStatisticslVO.getVipDiscountAmount()); tActivityStatisticslVO.setType("赠送会员"); tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime()); } diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml index 8e66a69..232d838 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml @@ -397,7 +397,7 @@ </select> <select id="getDateData" resultType="java.util.Map"> SELECT - DATE_FORMAT( create_time, '%Y-%m-%d %H' ) as time, + DATE_FORMAT( create_time, '%H:00' ) as time, CAST(SUM(service_charge-coupon_discount_amount) AS DECIMAL(20, 6)) as servicecharge, CAST(SUM(charging_capacity) AS DECIMAL(20, 6)) as electrovalence, CAST(SUM(electrovalence) AS DECIMAL(20, 4)) AS paymentAmount, @@ -962,7 +962,7 @@ 315360 </if> <if test="statisticsQueryDto.dayType == 5"> - (86400*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference )) </if> @@ -1010,19 +1010,19 @@ SELECT FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.start_time)) / <if test="statisticsQueryDto.dayType == 1"> - 86400 + 864 </if> <if test="statisticsQueryDto.dayType == 2"> - 604800 + 6048 </if> <if test="statisticsQueryDto.dayType == 3"> - 2592000 + 25920 </if> <if test="statisticsQueryDto.dayType == 4"> - 31536000 + 315360 </if> <if test="statisticsQueryDto.dayType == 5"> - (86400*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference )) </if> @@ -1068,29 +1068,28 @@ SELECT FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_time)) / <if test="statisticsQueryDto.dayType == 1"> - 86400 + 864 </if> <if test="statisticsQueryDto.dayType == 2"> - 604800 + 6048 </if> <if test="statisticsQueryDto.dayType == 3"> - 2592000 + 25920 </if> <if test="statisticsQueryDto.dayType == 4"> - 31536000 + 315360 </if> <if test="statisticsQueryDto.dayType == 5"> - (86400*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference )) </if> - ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as name1 + ), 2) AS percent,cp.name FROM - `charging_pile_service`.`t_fault_message` co - LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id - LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id + `charging_pile_service`.`t_fault_message` co + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id WHERE - co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 1 and co.status =2 + co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 1 and co.status =2 <if test="siteIds != null and siteIds.size() > 0"> and co.site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> @@ -1110,14 +1109,14 @@ AND YEAR( co.create_time ) = YEAR(CURDATE() ) </if> <if test="statisticsQueryDto.dayType == 5"> - <if test="statisticsQueryDto.startTime != null"> + and DATE(co.create_time) >= #{statisticsQueryDto.startTime} - </if> - <if test="statisticsQueryDto.endTime != null"> + + and DATE(co.create_time) <= #{statisticsQueryDto.endTime} - </if> + </if> - GROUP BY tc.name,cp.name,co.charging_gun_id + GROUP BY cp.name </select> @@ -1125,29 +1124,28 @@ SELECT FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_time)) / <if test="statisticsQueryDto.dayType == 1"> - 86400 + 864 </if> <if test="statisticsQueryDto.dayType == 2"> - 604800 + 6048 </if> <if test="statisticsQueryDto.dayType == 3"> - 2592000 + 25920 </if> <if test="statisticsQueryDto.dayType == 4"> - 31536000 + 315360 </if> <if test="statisticsQueryDto.dayType == 5"> - (86400*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference )) </if> - ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as name1 + ), 2) AS percent,cp.name FROM `charging_pile_service`.`t_fault_message` co - LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id - LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id WHERE - co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 2 and co.status =2 + co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type in (2,3) and co.status =2 <if test="siteIds != null and siteIds.size() > 0"> and co.site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> @@ -1167,14 +1165,13 @@ AND YEAR( co.create_time ) = YEAR(CURDATE() ) </if> <if test="statisticsQueryDto.dayType == 5"> - <if test="statisticsQueryDto.startTime != null"> + and DATE(co.create_time) >= #{statisticsQueryDto.startTime} - </if> - <if test="statisticsQueryDto.endTime != null"> + and DATE(co.create_time) <= #{statisticsQueryDto.endTime} - </if> + </if> - GROUP BY tc.name,cp.name,co.charging_gun_id + GROUP BY cp.name </select> @@ -1182,27 +1179,26 @@ SELECT FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_time)) / <if test="statisticsQueryDto.dayType == 1"> - 86400 + 864 </if> <if test="statisticsQueryDto.dayType == 2"> - 604800 + 6048 </if> <if test="statisticsQueryDto.dayType == 3"> - 2592000 + 25920 </if> <if test="statisticsQueryDto.dayType == 4"> - 31536000 + 315360 </if> <if test="statisticsQueryDto.dayType == 5"> - (86400*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference )) </if> - ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as name1 + ), 2) AS percent,cp.name FROM `charging_pile_service`.`t_fault_message` co - LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id - LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id WHERE co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 1 and co.status =1 <if test="siteIds != null and siteIds.size() > 0"> @@ -1231,35 +1227,34 @@ and DATE(co.create_time) <= #{statisticsQueryDto.endTime} </if> </if> - GROUP BY tc.name,cp.name,co.charging_gun_id + GROUP BY cp.name </select> <select id="equipmentMapOut2" resultType="java.util.Map"> SELECT FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(co.end_time, co.down_time)) / <if test="statisticsQueryDto.dayType == 1"> - 86400 + 864 </if> <if test="statisticsQueryDto.dayType == 2"> - 604800 + 6048 </if> <if test="statisticsQueryDto.dayType == 3"> - 2592000 + 25920 </if> <if test="statisticsQueryDto.dayType == 4"> - 31536000 + 315360 </if> <if test="statisticsQueryDto.dayType == 5"> - (86400*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference + (864*(SELECT TIMESTAMPDIFF(DAY, #{statisticsQueryDto.startTime}, #{statisticsQueryDto.endTime}) +1 AS days_difference )) </if> - ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as name1 + ), 2) AS percent,cp.name FROM `charging_pile_service`.`t_fault_message` co - LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id - LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id WHERE - co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 2 and co.status =1 + co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 1 and co.status =1 <if test="siteIds != null and siteIds.size() > 0"> and co.site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> @@ -1286,12 +1281,12 @@ and DATE(co.create_time) <= #{statisticsQueryDto.endTime} </if> </if> - GROUP BY tc.name,cp.name,co.charging_gun_id + GROUP BY cp.name </select> <select id="needElec" resultType="java.util.Map"> SELECT - FORMAT((SUM(co.current) / SUM(co.need_elec)), 2) AS percent, + FORMAT((SUM(co.current)*100 / SUM(co.need_elec)), 2) AS percent, co.charging_gun_id, tc.name as name, cp.name AS siteName @@ -1300,7 +1295,7 @@ LEFT JOIN `charging_pile_service`.`t_charging_gun` tc ON co.charging_gun_id = tc.id LEFT JOIN `charging_pile_service`.`t_charging_pile` cp ON tc.charging_pile_id = cp.id <where> - cp.type = 1 and co.need_elec != 0 + tc.type = 4 and co.need_elec != 0 <if test="siteIds != null and siteIds.size() > 0"> and co.site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> @@ -1485,7 +1480,7 @@ </select> <select id="needElec1" resultType="java.util.Map"> SELECT - FORMAT((SUM(co.current) / SUM(co.need_elec)), 2) AS percent, + FORMAT((SUM(co.current)*100 / SUM(co.need_elec)), 2) AS percent, co.charging_gun_id, tc.name as name, cp.name AS siteName @@ -1494,7 +1489,7 @@ LEFT JOIN `charging_pile_service`.`t_charging_gun` tc ON co.charging_gun_id = tc.id LEFT JOIN `charging_pile_service`.`t_charging_pile` cp ON tc.charging_pile_id = cp.id <where> - cp.type = 2 + tc.type in (2,3) <if test="siteIds != null and siteIds.size() > 0"> and co.site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml index cd7c16b..5b7209c 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml @@ -13,28 +13,22 @@ select t1.* from t_settlement_confirm t1 where 1=1 - <if test="req.type != null "> - and t1.type = #{req.type} - </if> <if test="req.partnerId != null "> - and t1.partnerId = #{req.partnerId} + and t1.partner_id = #{req.partnerId} + </if> + <if test="req.siteIds != null "> + and t1.site_id = #{req.siteIds} </if> <if test="req.type == 1 "> <if test="req.startTime != null and req.startTime!=''"> and (t1.start_time between #{req.startTime} and #{req.endTime} </if> </if> - <if test="req.siteIds != null and req.siteIds.size() > 0"> - AND t1.site_id IN - <foreach collection="req.siteIds" item="siteId" open="(" separator="," close=")"> - #{siteId} - </foreach> - </if> <if test="req.type == 2 "> <if test="req.startTime != null and req.startTime!=''"> and (t1.end_time between #{req.startTime} and #{req.endTime} </if> </if> -and t1.del_flag = 0 + and t1.del_flag = 0 </select> </mapper> diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml index 588abad..51bc3bb 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml @@ -44,6 +44,7 @@ id, code, app_user_id, order_type, goods_id, coupon_id, purchase_quantity, app_user_address_id, order_amount, app_coupon_id, coupon_discount_amount, vip_discount, vip_discount_amount, payment_amount, payment_status, payment_type, serial_number, remark, status, express_company, express_number, consigner_id, consigner_time, receiving_time, cancellation_time, cancellation_id, refund_code, refund_amount, refund_status, refund_serial_number, refund_time, create_time, del_flag </sql> <select id="activityStatistics" resultType="com.ruoyi.order.api.vo.TActivityStatisticslVO"> + select * from ( select t9.code ,t9.order_amount as orderAmount, t9.coupon_discount_amount as couponDiscountAmount, t9.vip_discount_amount as vipDiscountAmount, @@ -52,30 +53,29 @@ t9.app_user_id as appUserId, 1 as orderType from t_charging_order t9 - where t9.id = 0 limit 1 + where t9.id = 0 <if test="req.orderType == null or req.orderType == 1"> <if test="req.type == null or req.type == 1 or req.type == 2"> union all - select t1.code ,t1.order_amount as orderAmount, - t1.coupon_discount_amount as couponDiscountAmount, - t1.vip_discount_amount as vipDiscountAmount, - t1.payment_amount as paymentAmount, - t1.create_time as createTime, + select + t1.code , + t1.order_amount as orderAmount, + t1.coupon_discount_amount as couponDiscountAmount, + t1.vip_discount_amount as vipDiscountAmount, + t1.payment_amount as paymentAmount, + t1.create_time as createTime, t1.app_user_id as appUserId, - 1 as orderType + 1 as orderType from t_charging_order t1 where 1 = 1 <if test="null != req.code and req.code!=''"> and t1.code LIKE CONCAT('%',#{req.code},'%') </if> - <if test="req.type != null and req.type != '' and req.type == 1"> + <if test="req.type != null and req.type == 1"> and t1.coupon_discount_amount > 0 </if> - <if test="req.type != null and req.type != '' and req.type == 2"> + <if test="req.type != null and req.type == 2"> and t1.vip_discount_amount > 0 - </if> - <if test="req.type == null "> - and (t1.vip_discount_amount > 0 or t1.coupon_discount_amount > 0) </if> <if test="null != req.userIds and req.userIds.size()>0" > and t1.app_user_id in @@ -92,8 +92,9 @@ <if test="req.endTime != null and req.endTime != '' and req.startTime != null and req.startTime != ''"> AND (t1.create_time between CONCAT(#{req.startTime},':00') and CONCAT(#{req.endTime},':59')) </if> - and t1.recharge_payment_status =2 - and t1.refund_status !=2 + and (t1.vip_discount_amount > 0 or t1.coupon_discount_amount > 0) + and t1.recharge_payment_status =2 + and t1.refund_status !=2 AND t1.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} </if> </if> @@ -192,10 +193,11 @@ AND (t5.create_time between CONCAT(#{req.startTime},':00') and CONCAT(#{req.endTime},':59')) </if> AND t5.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} - </if> </if> </if> + ) + order by createTime DESC </select> diff --git a/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml index 1ff4d3a..fc51ae5 100644 --- a/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml +++ b/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml @@ -23,7 +23,7 @@ nacos: discovery: # 服务注册地址 - server-addr: 127.0.0.1:8848 + server-addr: 192.168.110.169:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb @@ -31,7 +31,7 @@ password: nacos config: # 配置中心地址 - server-addr: 127.0.0.1:8848 + server-addr: 192.168.110.169:8848 namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP name: ${spring.application.name} @@ -56,7 +56,7 @@ type: nacos nacos: # 开发环境 - server-addr: 127.0.0.1:8848 + server-addr: 192.168.110.169:8848 namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP data-id: seata-server.properties @@ -74,7 +74,7 @@ nacos: application: seata-server # 开发环境 - server-addr: 127.0.0.1:8848 + server-addr: 192.168.110.169:8848 namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP username: nacos @@ -89,7 +89,7 @@ nacos: discovery: # 开发环境 - server-addr: 127.0.0.1:8848 # nacos注册中心地址 + server-addr: 192.168.110.169:8848 # nacos注册中心地址 namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 group: DEFAULT_GROUP application: seata-server #Nacos 中 Seata 名称 -- Gitblit v1.7.1