ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java
@@ -17,7 +17,7 @@ @ApiModelProperty("最低会员价格") private BigDecimal minPrice; @ApiModelProperty("vip结束时间") @JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime vipExpireTime; @ApiModelProperty("当天是否签到") private Integer isSign; ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/CouponListDto.java
@@ -7,7 +7,6 @@ import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data @ApiModel("小程序扫一扫获取优惠券列表DTO") ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
@@ -37,11 +37,11 @@ private BigDecimal discount; @ApiModelProperty(value = "结束时间") @TableField("end_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; @ApiModelProperty(value = "开始时间") @TableField("start_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "最高优惠金额") @TableField("maximum_discount_amount") ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/TAppUserDto.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -49,6 +50,7 @@ @ApiModelProperty(value = "会员到期时间") @TableField("vip_end_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime vipEndTime; @ApiModelProperty(value = "单位id") @@ -99,6 +101,7 @@ @ApiModelProperty(value = "最后一次登录时间") @TableField("last_login_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime lastLoginTime; ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserCarFallbackFactory.java
@@ -36,6 +36,11 @@ public R<TAppUserCar> getAppUserCarByLicensePlate(String licensePlate) { return R.fail("根据车牌号查询数据失败:" + throwable.getMessage()); } @Override public R<List<Long>> getAppUserCarByLicensePlates(String licensePlate) { return null; } }; } } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserCarClient.java
@@ -35,6 +35,8 @@ * @param licensePlate * @return */ @PostMapping(value = "/t-app-user-car/getAppUserCarByLicensePlate") @PostMapping(value = "/t-app-user-car/t-app-user-car/getAppUserCarByLicensePlate") R<TAppUserCar> getAppUserCarByLicensePlate(@RequestParam("licensePlate") String licensePlate); @PostMapping(value = "/t-app-user-car/t-app-user-car/getAppUserCarByLicensePlates") R<List<Long>> getAppUserCarByLicensePlates(@RequestParam("licensePlate") String licensePlate); } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserIntegralChangeClient.java
@@ -30,6 +30,6 @@ * @param code * @return */ @PostMapping("/t-app-user-integral-change/addAppUserIntegralChange") @PostMapping("/t-app-user-integral-change/getTAppUserIntegralChangeByOrderCode") R<TAppUserIntegralChange> getTAppUserIntegralChangeByOrderCode(@RequestParam("code") String code); } ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -33,6 +34,8 @@ @ApiModelProperty(value = "主键") @TableId("id") private Long id; @TableField(exist = false) private String uid; @ApiModelProperty(value = "用户id") @TableField("app_user_id") @@ -44,9 +47,11 @@ @ApiModelProperty(value = "结束时间") @TableField("end_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; @ApiModelProperty(value = "开始时间") @TableField("start_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "获得方式(1=积分兑换,2=现金购买)") @@ -71,6 +76,7 @@ @ApiModelProperty(value = "支付完成时间") @TableField("payment_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime paymentTime; @ApiModelProperty(value = "状态(1=未使用,2=已使用)") ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java
@@ -56,7 +56,7 @@ @ApiModelProperty(value = "会员到期时间") @TableField("vip_end_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime vipEndTime; @ApiModelProperty(value = "单位id") @@ -115,6 +115,7 @@ @ApiModelProperty(value = "最后一次登录时间") @TableField("last_login_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime lastLoginTime; @ApiModelProperty(value = "邀请人id") @TableField("invite_user_id") ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserIntegralChange.java
@@ -60,10 +60,10 @@ @ApiModelProperty(value = "添加时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @TableField(exist = false) @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime dateTime; @ApiModelProperty(value = "扩展字段") ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserSign.java
@@ -52,6 +52,7 @@ @ApiModelProperty(value = "添加时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserTag.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -42,6 +43,7 @@ @ApiModelProperty(value = "添加时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInviteUser.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -47,6 +48,7 @@ @ApiModelProperty(value = "添加时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java
@@ -204,7 +204,7 @@ */ @TableField("establishment_time") @ApiModelProperty(value = "建站时间", notes = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime establishmentTime; /** * 排序 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -64,10 +65,12 @@ @ApiModelProperty(value = "入场时间") @TableField("in_parking_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime inParkingTime; @ApiModelProperty(value = "出场时间") @TableField("out_parking_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime outParkingTime; @ApiModelProperty(value = "停车时长(分钟)") @@ -88,6 +91,7 @@ @ApiModelProperty(value = "添加时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "超时占位费") ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TRepair.java
@@ -1,6 +1,7 @@ package com.ruoyi.chargingPile.api.model; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -56,6 +57,7 @@ @ApiModelProperty(value = "报修时间") @TableField("repair_time") @DateTimeFormat(pattern = "yyyy-MM-ddTHH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime repairTime; ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TSiteMenu.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -90,6 +91,7 @@ @ApiModelProperty(value = "创建时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "更新者") @@ -98,6 +100,7 @@ @ApiModelProperty(value = "更新时间") @TableField("update_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTime; @ApiModelProperty(value = "备注") ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderAccountingStrategy.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -83,6 +84,7 @@ @ApiModelProperty(value = "首次添加时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "会员抵扣") ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderRefund.java
@@ -58,7 +58,7 @@ @ApiModelProperty(value = "退款成功时间") @TableField("refund_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime refundTime; @ApiModelProperty(value = "订单编号") @@ -99,7 +99,7 @@ private BigDecimal paymentAmount; @ApiModelProperty(value = "支付时间") @TableField(exist = false) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime payTime; @ApiModelProperty(value = "订单id") @TableField(exist = false) ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrderRefund.java
@@ -5,6 +5,8 @@ import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.TableField; import java.io.Serializable; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -32,6 +34,7 @@ @ApiModelProperty(value = "支付时间") @TableField("pay_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime payTime; @ApiModelProperty(value = "支付流水号") @@ -67,6 +70,7 @@ @ApiModelProperty(value = "退款成功时间") @TableField("refund_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime refundTime; @ApiModelProperty(value = "订单编号") ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrderRefund.java
@@ -5,6 +5,8 @@ import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.TableField; import java.io.Serializable; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -61,6 +63,7 @@ @ApiModelProperty(value = "退款成功时间") @TableField("refund_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime refundTime; @ApiModelProperty(value = "订单编号") ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TChargingCountQuery.java
@@ -1,5 +1,6 @@ package com.ruoyi.order.api.query; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -12,8 +13,10 @@ @ApiModel(value = "查询用户在会员期 有多少次享用了充电折扣订单") public class TChargingCountQuery { @ApiModelProperty(value = "会员开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "会员结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; @ApiModelProperty(value = "用户id") private Long userId; ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java
@@ -29,6 +29,8 @@ private String licensePlate; @ApiModelProperty(value = "手机号") private String phone; @ApiModelProperty(value = "uid") private String uid; @ApiModelProperty(value = "时段数") ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TActivityStatisticslVO.java
@@ -35,7 +35,7 @@ @ApiModelProperty(value = "实付") private BigDecimal paymentAmount; @ApiModelProperty(value = "消费时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime time; @ApiModelProperty(value = "总计优惠") private BigDecimal total; ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GenTable.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -95,6 +96,7 @@ @ApiModelProperty(value = "创建时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "更新者") @@ -103,6 +105,7 @@ @ApiModelProperty(value = "更新时间") @TableField("update_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTime; @ApiModelProperty(value = "备注") ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GenTableColumn.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -107,6 +108,7 @@ @ApiModelProperty(value = "创建时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "更新者") @@ -115,6 +117,7 @@ @ApiModelProperty(value = "更新时间") @TableField("update_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTime; ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SysDictData.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -71,6 +72,7 @@ @ApiModelProperty(value = "创建时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "更新者") @@ -79,6 +81,7 @@ @ApiModelProperty(value = "更新时间") @TableField("update_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTime; @ApiModelProperty(value = "备注") ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SysDictType.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -51,6 +52,7 @@ @ApiModelProperty(value = "创建时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "更新者") @@ -59,6 +61,7 @@ @ApiModelProperty(value = "更新时间") @TableField("update_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTime; @ApiModelProperty(value = "备注") ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SysNotice.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -56,6 +57,7 @@ @ApiModelProperty(value = "创建时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "更新者") ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/vo/CouponListVOVO.java
@@ -1,5 +1,6 @@ package com.ruoyi.other.api.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -28,6 +29,7 @@ @ApiModelProperty(value = "有效期") private String validityTime; @ApiModelProperty(value = "结束时间 前端忽略") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; @ApiModelProperty(value = "是否可用") private Integer isUse; ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysLoginLog.java
@@ -66,8 +66,7 @@ */ @TableField("login_time") @ApiModelProperty(value = "登录时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime loginTime; /** * 登录状态(1=成功,2=失败) @@ -83,6 +82,7 @@ * 添加时间 */ @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; /** * 删除状态(0=否,1=是) ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/TAppUserLoginInfo.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -38,6 +39,7 @@ private Integer vipId; @ApiModelProperty(value = "会员到期时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime vipEndTime; @ApiModelProperty(value = "单位id") @@ -74,6 +76,7 @@ private Integer status; @ApiModelProperty(value = "最后一次登录时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime lastLoginTime; } ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BasePojo.java
@@ -21,7 +21,7 @@ /** 创建时间 */ @ApiModelProperty(value = "记录创建时间,前端忽略") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField(value = "create_time", fill = FieldFill.INSERT) private LocalDateTime createTime; ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/SysOperLogQuery.java
@@ -20,9 +20,11 @@ private Integer status; @ApiModelProperty(value = "操作开始时间", notes = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime startTime; @ApiModelProperty(value = "操作结束时间", notes = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserCarController.java
@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.stream.Collectors; /** * <p> @@ -47,6 +48,13 @@ TAppUserCar one = appUserCarService.getOne(new LambdaQueryWrapper<TAppUserCar>().eq(TAppUserCar::getLicensePlate, licensePlate).eq(TAppUserCar::getDelFlag, 0)); return R.ok(one); } @PostMapping(value = "/t-app-user-car/getAppUserCarByLicensePlates") public R<List<Long>> getAppUserCarByLicensePlates(@RequestParam("licensePlate") String licensePlate){ List<Long> collect = appUserCarService.list(new LambdaQueryWrapper<TAppUserCar>().like(TAppUserCar::getLicensePlate, licensePlate) .eq(TAppUserCar::getDelFlag, 0)).stream() .map(TAppUserCar::getId).collect(Collectors.toList()); return R.ok(collect); } } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -695,6 +695,7 @@ @GetMapping(value = "/user/coupon/getById") public R<TAppCoupon> couponGetById(@RequestParam("id")Long id) { TAppCoupon appCoupon = appCouponService.getById(id); appCoupon.setUid(id.toString()); return R.ok(appCoupon); } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TInviteUserController.java
@@ -38,7 +38,7 @@ */ @PostMapping("/getInviteUser") public R<TInviteUser> getInviteUser(@RequestBody GetInviteUser query){ TInviteUser one = inviteUserService.getOne(new LambdaQueryWrapper<TInviteUser>().eq(TInviteUser::getAppUserId, query.getBeInvitedAppUserId()) TInviteUser one = inviteUserService.getOne(new LambdaQueryWrapper<TInviteUser>().eq(TInviteUser::getAppUserId, query.getAppUserId()) .eq(TInviteUser::getBeInvitedAppUserId, query.getBeInvitedAppUserId())); return R.ok(one); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -252,10 +252,10 @@ TChargingGun chargingGun = chargingGunService.getById(id); siteNameVO.setGunName(chargingGun.getName()); siteNameVO.setGunNumber(chargingGun.getCode()); TChargingPile chargingPile = chargingPileService.getById(id); TChargingPile chargingPile = chargingPileService.getById(chargingGun.getChargingPileId()); siteNameVO.setPileName(chargingPile.getName()); siteNameVO.setPileNumber(chargingPile.getNumber()); Site site = siteService.getById(id); Site site = siteService.getById(chargingGun.getSiteId()); siteNameVO.setSiteName(site.getName()); return R.ok(siteNameVO); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -295,11 +295,12 @@ @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"}) public R<TParkLotRecordCountVo> work(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){ List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()) .between(TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime(), parkingRecordQueryDto.getEndTime()).list(); .ge(parkingRecordQueryDto.getStartTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime()) .le(parkingRecordQueryDto.getEndTime()!=null,TParkingRecord::getCreateTime, parkingRecordQueryDto.getEndTime().plusDays(1)).list(); int count1 = list.size(); //统计出list中chargingOrderId为null的数据个数 int count2 = list.stream().filter(item -> item.getChargingOrderId() == null).collect(Collectors.toList()).size(); int count3 = count1-count2; int count2 = list.stream().filter(item -> item.getChargingOrderId() != null).collect(Collectors.toList()).size(); int count3 = list.stream().filter(item -> item.getOutParkingType() == 2).collect(Collectors.toList()).size(); //计算出list中parkingDuration的总和 int count4 = 0; for (TParkingRecord tParkingRecord : list) { @@ -322,8 +323,7 @@ @PostMapping(value = "/parking/work1") @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"}) public R<TParkLotRecordCountVo> work1(@RequestBody ParkingRecordQueryDto parkingRecordQueryDto){ List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()) .between(TParkingRecord::getCreateTime, parkingRecordQueryDto.getStartTime(), parkingRecordQueryDto.getEndTime()).list(); List<TParkingRecord> list = parkingRecordService.lambdaQuery().eq(parkingRecordQueryDto.getParkingLotId() != null, TParkingRecord::getParkingLotId, parkingRecordQueryDto.getParkingLotId()).list(); int count1 = list.size(); //统计出list中chargingOrderId为null的数据个数 int count2 = list.stream().filter(item -> item.getChargingOrderId() == null).collect(Collectors.toList()).size(); ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
@@ -109,8 +109,11 @@ tChargingGunVO.setAuthUpdate(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.CHARGING_GUN_UPDATE)); tChargingGunVO.setAuthViewRates(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.CHARGING_GUN_VIEW_RATES)); if(null == tChargingGunVO.getAccountingStrategyId()){ Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGunVO.getSiteId())).getData().get(0); tChargingGunVO.setAccountingStrategyId(site.getAccountingStrategyId()); List<Site> data = siteClient.getSiteByIds(Arrays.asList(tChargingGunVO.getSiteId())).getData(); if(data.size() > 0){ Site site = data.get(0); tChargingGunVO.setAccountingStrategyId(site.getAccountingStrategyId()); } } } pageInfo.setRecords(list); ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -442,7 +442,7 @@ //充电中 long charging = list.stream().filter(s -> s.getStatus().equals(4)).count(); //离网 long offline = list.stream().filter(s -> s.getStatus().equals(0)).count(); long offline = list.stream().filter(s -> s.getStatus().equals(1)).count(); //故障 long breakdown = list.stream().filter(s -> s.getStatus().equals(7)).count(); ChargingGunCountMonitoring chargingGunCountMonitoring = new ChargingGunCountMonitoring(); @@ -488,8 +488,8 @@ if(null != query.getStatus() && 0 < query.getStatus().size()){ if(query.getStatus().contains(3)){ query.getStatus().add(5); query.getStatus().add(6); query.getStatus().add(7); } } PageInfo<ChargingGunMonitoring> pageInfo = new PageInfo<>(query.getPageCurr(), query.getPageSize()); @@ -501,12 +501,13 @@ } if(status == 4){ Integer id = gunMonitoring.getId(); //根据订单数据查询车牌号 TChargingOrder chargingOrder = chargingOrderClient.getOrderDetailByGunId(id).getData(); if(null != chargingOrder){ Long appUserCarId = chargingOrder.getAppUserCarId(); TAppUserCar tAppUserCar = appUserCarClient.getCarByIds(Arrays.asList(appUserCarId)).getData().get(0); gunMonitoring.setLicensePlate(tAppUserCar.getLicensePlate()); if(null != appUserCarId){ TAppUserCar tAppUserCar = appUserCarClient.getCarByIds(Arrays.asList(appUserCarId)).getData().get(0); gunMonitoring.setLicensePlate(tAppUserCar.getLicensePlate()); } UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); gunMonitoring.setChargingRatio(BigDecimal.valueOf(data.getSoc())); ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml
@@ -46,7 +46,7 @@ enabled: true application-id: ${spring.application.name} tx-service-group: seata_tx_group #此处配置自定义的seata事务分组名称 enable-auto-data-source-proxy: true enable-auto-data-source-proxy: false service: vgroup-mapping: seata_tx_group: default ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingGunMapper.xml
@@ -74,6 +74,9 @@ IFNULL(COUNT(charge_mode),0) AS modeCount FROM t_charging_gun WHERE del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} AND charging_pile_id in ( select id from `charging_pile_service`.`t_charging_pile` where del_flag = 0 ) <if test="siteIds != null and siteIds.size()>0"> AND site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> @@ -85,12 +88,15 @@ <select id="getStatusModeStatistics" resultType="com.ruoyi.chargingPile.api.vo.StatusModeStatisticsVO"> SELECT charge_mode, IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 2),0) AS freeCount, IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 5),0) AS filledCount, IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 3),0) AS insertCount, IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 4),0) AS chargingCount IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 2 AND charge_mode = #{chargeMode}),0) AS freeCount, IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 5 AND charge_mode = #{chargeMode}),0) AS filledCount, IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 3 AND charge_mode = #{chargeMode}),0) AS insertCount, IFNULL((SELECT COUNT(*) FROM t_charging_gun WHERE status = 4 AND charge_mode = #{chargeMode}),0) AS chargingCount FROM t_charging_gun WHERE del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} AND charge_mode = #{chargeMode} AND charging_pile_id in ( select id from `charging_pile_service`.`t_charging_pile` where del_flag = 0 ) <if test="siteIds != null and siteIds.size()>0"> AND site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml
@@ -105,7 +105,7 @@ </foreach> </if> <if test="null != query.name and '' != query.name"> and a.name like CONCAT('%', #{query.name}, '%') and CONCAT(b.number, a.name) like CONCAT('%', #{query.name}, '%') </if> </select> </mapper> ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java
@@ -34,7 +34,7 @@ public R<UploadRealTimeMonitoringData> chargingOrderInfo(@RequestParam("orderId") String orderId){ List<UploadRealTimeMonitoringData> dataByOrderCode = uploadRealTimeMonitoringDataService.getDataByOrderCode(orderId); if(dataByOrderCode.size() > 0){ UploadRealTimeMonitoringData uploadRealTimeMonitoringData = dataByOrderCode.get(dataByOrderCode.size() - 1); UploadRealTimeMonitoringData uploadRealTimeMonitoringData = dataByOrderCode.get(0); return R.ok(uploadRealTimeMonitoringData); } return R.ok(); @@ -51,7 +51,7 @@ for (String s : orderId.split(",")) { List<UploadRealTimeMonitoringData> dataByOrderCode = uploadRealTimeMonitoringDataService.getDataByOrderCode(s); if(dataByOrderCode.size() > 0){ UploadRealTimeMonitoringData uploadRealTimeMonitoringData = dataByOrderCode.get(dataByOrderCode.size() - 1); UploadRealTimeMonitoringData uploadRealTimeMonitoringData = dataByOrderCode.get(0); res.add(uploadRealTimeMonitoringData); } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
@@ -1,5 +1,6 @@ package com.ruoyi.integration.mongodb.service.impl; import cn.hutool.db.sql.Direction; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.iotda.constant.IotConstant; @@ -54,7 +55,7 @@ query.addCriteria(Criteria.where("transaction_serial_number").is(code)); } List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = mongoTemplate.find( query.with(Sort.by("create_time")) query.with(Sort.by(Sort.Order.desc("create_time"))) , UploadRealTimeMonitoringData.class); return uploadRealTimeMonitoringData; } ruoyi-service/ruoyi-integration/src/main/resources/bootstrap.yml
@@ -14,7 +14,6 @@ # 环境配置 active: dev # active: prod --- spring: cloud: ruoyi-service/ruoyi-integration/src/test/java/com/ruoyi/integration/RuoYiIntegrationApplicationTests.java
@@ -1,8 +1,21 @@ package com.ruoyi.integration; import com.alibaba.fastjson2.JSON; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; import java.util.List; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiIntegrationApplication.class) public class RuoYiIntegrationApplicationTests { @Resource private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; @Test public void test(){ List<UploadRealTimeMonitoringData> list = uploadRealTimeMonitoringDataService.getDataByOrderCode("CD93220241022154810850"); System.err.println(JSON.toJSONString(list)); } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -3,9 +3,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.*; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -23,6 +21,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.ChargingOrderGroup; import com.ruoyi.common.core.dto.ChargingPercentProvinceDto; import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -65,7 +64,6 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.time.YearMonth; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; @@ -311,15 +309,16 @@ } @ResponseBody @PostMapping(value = "/chargingOrderInfo") @GetMapping(value = "/chargingOrderInfo") @ApiOperation(value = "充电桩订单列表查看详情", tags = {"管理后台-订单管理"}) public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String orderId) { TChargingOrder byId = chargingOrderService.getById(orderId); public AjaxResult<ChargingOrderInfoVO> chargingOrderInfo(String strategyId) { TChargingOrder byId = chargingOrderService.getById(strategyId); ChargingOrderInfoVO chargingOrderInfoVO = new ChargingOrderInfoVO(); chargingOrderInfoVO.setCdElectronic(byId.getCurrent()+""); chargingOrderInfoVO.setCdVoltage(byId.getVoltage()+""); chargingOrderInfoVO.setSurplus(byId.getTotalElectricity()+""); chargingOrderInfoVO.setTotalPower(byId.getPower()+""); chargingOrderInfoVO.setCdElectronic(byId.getCurrent()!=null?byId.getCurrent()+"":""); chargingOrderInfoVO.setCdVoltage(byId.getVoltage()!=null?byId.getVoltage()+"":""); chargingOrderInfoVO.setSurplus(byId.getTotalElectricity()!=null?byId.getTotalElectricity()+"":""); chargingOrderInfoVO.setTotalPower(byId.getPower()!=null?byId.getPower()+"":""); if (byId.getAppUserCarId()!=null){ List<TAppUserCar> data = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData(); if (!data.isEmpty()){ @@ -331,7 +330,7 @@ } // 时段总服务费 BigDecimal bigDecimal = new BigDecimal("0"); List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, orderId).orderByDesc(TChargingOrderAccountingStrategy::getStartTime).list(); List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, strategyId).orderByDesc(TChargingOrderAccountingStrategy::getStartTime).list(); for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : list) { bigDecimal = bigDecimal.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()); tChargingOrderAccountingStrategy.setVipDiscount( @@ -693,7 +692,9 @@ BigDecimal data2 = vipOrderService.getSumAmout(sixBefore); map.put("vipAmount",data2); return R.ok(map); return R.ok(map); } @Resource @@ -817,6 +818,7 @@ } List<TChargingOrder> list = chargingOrderService.lambdaQuery().ge(TChargingOrder::getStartTime, start).le(TChargingOrder::getEndTime, end).in(TChargingOrder::getSiteId, siteIds).list(); List<Long> chargingOrderIds = list.stream().map(TChargingOrder::getId).collect(Collectors.toList()); chargingOrderIds.add(-1L); //上方饼图 List<Map<String,Object>> maps = chargingOrderService.getSumByType(chargingOrderIds); @@ -953,16 +955,18 @@ tCharingUserMapVO.setMap(dateRangeStatistics); List<Map<String,Object>> map1 = chargingOrderService.usersByQuery(statisticsQueryDto); List<Map<String,Object>> map1 = chargingOrderService.usersByQuery1(statisticsQueryDto); LocalDate startDate1 = statisticsQueryDto.getStartTime(); LocalDate endDate1 = statisticsQueryDto.getEndTime(); List<Map<String, Object>> dateRangeStatistics1 = new ArrayList<>(); // 遍历日期范围 while (!startDate.isAfter(endDate)) { String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); while (!startDate1.isAfter(endDate1)) { String formattedDate = startDate1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); Map<String, Object> dailyStats = findMapWithDateValue(map1, formattedDate); if (dailyStats != null) { @@ -975,7 +979,7 @@ } // 移动到下一天 startDate = startDate.plusDays(1); startDate1 = startDate1.plusDays(1); } tCharingUserMapVO.setMap1(dateRangeStatistics1); @@ -1159,7 +1163,15 @@ } else { siteIds.add(statisticsQueryDto.getSiteId()); } List<TChargingOrder> list = chargingOrderService.lambdaQuery().in(!siteIds.isEmpty(), TChargingOrder::getSiteId, siteIds).eq(statisticsQueryDto.getSiteId() != null, TChargingOrder::getSiteId, statisticsQueryDto.getSiteId()).list(); LocalDateTime selectDate = statisticsQueryDto.getSelectDate(); LocalDateTime min = selectDate.with(LocalTime.MIN); LocalDateTime max = selectDate.with(LocalTime.MAX); List<TChargingOrder> list = chargingOrderService.lambdaQuery().in(!siteIds.isEmpty(), TChargingOrder::getSiteId, siteIds).ge( TChargingOrder::getCreateTime,min).le(BasePojo::getCreateTime,max).eq(statisticsQueryDto.getSiteId() != null, TChargingOrder::getSiteId, statisticsQueryDto.getSiteId()).list(); //当日的订单总数 int size = list.size(); //计算list中paymentAmount的总和 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
@@ -6,6 +6,7 @@ import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; @@ -63,7 +64,9 @@ .like(manageOrderAppealQuery.getCode() != null, TOrderAppeal::getCode, manageOrderAppealQuery.getCode()) .like(manageOrderAppealQuery.getPhone() != null, TOrderAppeal::getPhone, manageOrderAppealQuery.getPhone()) .eq(manageOrderAppealQuery.getOrderType() != null, TOrderAppeal::getOrderType, manageOrderAppealQuery.getOrderType()) .in(TOrderAppeal::getOrderType, 1, 2).page(Page.of(manageOrderAppealQuery.getPageCurr(), manageOrderAppealQuery.getPageSize())); .in(TOrderAppeal::getOrderType, 1, 2) .orderByDesc(TOrderAppeal::getFeedbackTime) .page(Page.of(manageOrderAppealQuery.getPageCurr(), manageOrderAppealQuery.getPageSize())); for (TOrderAppeal record : page.getRecords()) { record.setUid(record.getId().toString()); 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(@PathVariable Integer orderId, Integer orderType){ public AjaxResult<OrderEvaluateVo> getOrderEvaluate(Integer orderId, Integer orderType){ OrderEvaluateVo orderEvaluate = orderEvaluateService.getOrderEvaluate(orderId, orderType); return AjaxResult.success(orderEvaluate); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingStatisticsQueryDto.java
@@ -1,9 +1,11 @@ package com.ruoyi.order.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDate; import java.time.LocalDateTime; @Data public class ChargingStatisticsQueryDto { @@ -16,5 +18,6 @@ @ApiModelProperty("结束时间") private LocalDate endTime; @ApiModelProperty("工作台用查询参数") private LocalDate selectDate; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8") private LocalDateTime selectDate; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java
@@ -1,5 +1,6 @@ package com.ruoyi.order.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -28,10 +29,13 @@ @ApiModelProperty("支付金额") private Double paymentAmount; @ApiModelProperty("下单时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty("订单完成时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime endTime; @ApiModelProperty("支付时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime payTime; private Integer refundStatus; private Double finalAmount; ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderQueryDto.java
@@ -25,10 +25,10 @@ private Integer isRefund; @ApiModelProperty("下单时间1") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime1; @ApiModelProperty("下单时间2") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime2; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
@@ -459,33 +459,33 @@ } BigDecimal add = tChargingOrder.getElectrovalence().add(tChargingOrder.getServiceCharge()); tChargingOrder.setTotalAmount(add.toString()); tChargingOrder.setDiscount(tChargingOrder.getCouponDiscountAmount().toString()); tChargingOrder.setDiscount(tChargingOrder.getCouponDiscountAmount()!=null?tChargingOrder.getCouponDiscountAmount().toString():"0"); UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(tChargingOrder.getCode()).getData(); if (data5!=null){ if (data5.getTime_remaining()!=null){ chargingSecond+=data5.getTime_remaining()*60; } Integer cumulativeChargingTime = data5.getCumulative_charging_time(); // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟 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(); @@ -514,7 +514,7 @@ electrovalence = electrovalence.add(tChargingOrder.getElectrovalence()); electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence()); } if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() == 2){ if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() !=null && tChargingOrder.getRefundStatus() == 2){ refundAmount = refundAmount.add(tChargingOrder.getRefundAmount()); } // 累加累计服务费 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java
@@ -52,8 +52,11 @@ List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>().in(TChargingOrder::getSiteId, siteIds).eq(TChargingOrder::getStatus, 5) .eq(TChargingOrder::getDelFlag, 0).last(" and start_time between '" + startTime + "' and DATE_FORMAT(now(), '%Y-%m-%d %H:%i:%s')")); List<Long> orderId = list.stream().map(TChargingOrder::getId).collect(Collectors.toList()); List<TChargingOrderAccountingStrategy> list1 = this.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().in(TChargingOrderAccountingStrategy::getChargingOrderId, orderId)); List<TChargingOrderAccountingStrategy> list1 = new ArrayList<>(); if(orderId.size() > 0){ list1 = this.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().in(TChargingOrderAccountingStrategy::getChargingOrderId, orderId)); } List<List<Map<String, Object>>> list2 = new ArrayList<>(); for (int i = days; i >= 0; i--) { Calendar nowDateTime = Calendar.getInstance(); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -441,7 +441,6 @@ chargingOrder.setRechargePaymentStatus(1); chargingOrder.setRechargeAmount(addChargingOrder.getPaymentAmount()); chargingOrder.setAppCouponId(addChargingOrder.getAppUserCouponId()); chargingOrder.setVipDiscount(new BigDecimal(10)); chargingOrder.setVipDiscountAmount(BigDecimal.ZERO); chargingOrder.setOrderSource(0); chargingOrder.setTitle("【充电桩充电】" + chargingPile.getNumber() + "号桩/" + tChargingGun.getCode() + "号枪"); @@ -471,7 +470,7 @@ TAppUserVipDetail vipDetail = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData(); if(null != vipDetail){ Integer chargeNum = vipDetail.getChargeNum(); if(0 > chargeNum){ if(0 < chargeNum){ chargingOrder.setVipDiscount(discount); } } @@ -583,7 +582,7 @@ Integer start = Integer.valueOf(accountingStrategyDetailOrder.getStartTime().replaceAll(":", "")); Integer end = Integer.valueOf(accountingStrategyDetailOrder.getEndTime().replaceAll(":", "")); String[] split = accountingStrategyDetailOrder.getEndTime().split(":"); if(sta || now >= start){ if(sta || (now >= start && now < end)){ sta = true; Calendar end_calendar = Calendar.getInstance(); @@ -605,16 +604,16 @@ //每秒需要支付的服务费金额 BigDecimal s_server_amount = s_degrees.multiply(accountingStrategyDetailOrder.getServiceCharge()); //计算剩余金额能充多长时间的电 long times = rechargeAmount1.divide(s_server_amount, 0, RoundingMode.DOWN).longValue(); long times = rechargeAmount1.divide(s_total_amount, 0, RoundingMode.DOWN).longValue(); if(times > m){ //充电时间跨度两个计费策略,需要继续对下一个策略进行计算 serviceCharge = s_server_amount.multiply(new BigDecimal(m)); discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10)))); discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount))); rechargeAmount1 = rechargeAmount1.subtract(s_total_amount.multiply(new BigDecimal(m))); nowTimeMillis = null; }else{ serviceCharge = s_server_amount.multiply(new BigDecimal(times)); discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10)))); discountAmount = discountAmount.add(serviceCharge.multiply(new BigDecimal(1).subtract(discount))); break; } } @@ -652,116 +651,10 @@ log.error(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString()); sendMessageClient.platformStartCharging(platformStartCharging); //异步线程检测远程启动的应答结果。如果失败,则需要全额退款 Long id = chargingOrder.getId(); //执行5分钟的定时任务检测 ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.scheduleAtFixedRate(()->{ if(timingDetection(id)){ scheduler.shutdown(); } }, 5, 1, TimeUnit.SECONDS); return AjaxResult.success(); } /** * 定时检测mongodb数据库数据 * @param id * @return */ public boolean timingDetection(Long id){ TChargingOrder chargingOrder = this.getById(id); if(chargingOrder.getStatus() != 2){ return true; } String code = chargingOrder.getCode(); String key = "AQJC_" + chargingOrder.getChargingGunId(); //获取安全校验 com.ruoyi.integration.api.model.SecurityDetection securityDetection = securityDetectionClient.getSecurityDetection(chargingOrder.getCode()).getData(); if(null != securityDetection){ PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + chargingOrder.getChargingGunId()); if(null != preChargeCheck1){ preChargeCheck1.setElectronicLockLock(true); preChargeCheck1.setInsulationTesting(true); preChargeCheck1.setSecureConnectionDetection(securityDetection.getSecure_connection() == 1); preChargeCheck1.setStartupSuccess(1); redisService.setCacheObject("AQJC_" + chargingOrder.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS); } } List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData(); if(null == data){ return false; } log.error(code + ":-------------------开始检查调起充电结果-------------------" + data.toString()); if(data.size() != 0){ PlatformStartChargingReply platformStartChargingReply = data.get(1); Integer startup_result = platformStartChargingReply.getStartup_result(); Integer failure_cause = platformStartChargingReply.getFailure_cause(); Integer counter = counter_map.get(code); PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key); //5分钟内还未插枪则取消充电,退回金额。 if(failure_cause == 5 && (null == counter || counter < 300)){ counter = (null == counter ? 0 : counter) + 1; counter_map.put(code, counter); //启动失败 preChargeCheck1.setStartupSuccess(3); preChargeCheck1.setFailureCause(failure_cause); redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); return false; } //清除计时器中的无效数据 counter_map.remove(code); TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code)); if(0 == startup_result){ //启动失败 preChargeCheck1.setStartupSuccess(3); preChargeCheck1.setFailureCause(failure_cause); //启动失败后取消订单,退款操作 refund(code); order.setStatus(-1); order.setEndMode(0); }else{ //启动成功 preChargeCheck1.setStartupSuccess(2); order.setStatus(3); order.setStartTime(LocalDateTime.now()); } this.updateById(order); redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); return true; }else{ Integer counter = boot_failed_map.get(code); log.error(code + ":-------------------未上传开启充电结果-------------------" + counter); PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key); //5分钟内未启动成功,退回金额。 if(null == counter || counter < 300){ counter = (null == counter ? 0 : counter) + 1; boot_failed_map.put(code, counter); //启动失败 preChargeCheck1.setStartupSuccess(3); preChargeCheck1.setFailureCause(0); redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); return false; } //清除计时器中的无效数据 boot_failed_map.remove(code); TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code)); //启动失败 preChargeCheck1.setStartupSuccess(3); preChargeCheck1.setFailureCause(0); //启动失败后取消订单,退款操作 refund(code); order.setStatus(-1); order.setEndMode(0); this.updateById(order); redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS); return true; } } /** @@ -928,7 +821,7 @@ if(null != data){ chargingDetails.setChargeCurrent(data.getOutput_current()); chargingDetails.setChargeVoltage(data.getOutput_voltage()); BigDecimal power = data.getOutput_current().multiply(data.getOutput_voltage()).divide(new BigDecimal(1000)); BigDecimal power = data.getOutput_current().multiply(data.getOutput_voltage()).divide(new BigDecimal(1000), new MathContext(4, RoundingMode.HALF_EVEN)); chargingDetails.setChargePower(power); chargingDetails.setCompletionRatio(data.getSoc()); chargingDetails.setRemainingChargeTime(data.getTime_remaining()); @@ -983,70 +876,6 @@ sendMessageClient.platformStopCharging(platformStopCharging); log.error(code1 + ":-------------------远程停止充电请求-------------------"); log.error(platformStopCharging.toString()); //开始查询停机应答,成功后开始计费费用 boolean stop_status = false; for (int i = 0; i < 60; i++) { TChargingOrder chargingOrder1 = this.getById(id); if(chargingOrder1.getStatus() != 3){ stop_status = true; break; } GetPlatformStopChargingReply query = new GetPlatformStopChargingReply(); query.setCharging_gun_code(chargingGun.getCode()); query.setCharging_pile_code(chargingPile.getCode()); //将时间转换成UTC时间后查询数据(mongodb存储时间以UTC格式存储) ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zonedDateTime = ZonedDateTime.of(chargingOrder.getEndTime(), zoneId); ZonedDateTime endTime = zonedDateTime.withZoneSameInstant(ZoneId.of("UTC")); query.setEnd_time(endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); PlatformStopChargingReply reply = platformStopChargingReplyClient.getPlatformStopChargingReply(query).getData(); log.error(code1 + ":-------------------查询远程停止充电应答-------------------"); if(null == reply){ log.error(code1 + ":-------------------远程停止充电应答无数据-------------------"); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } continue; } log.error(reply.toString()); if(0 == reply.getStop_result()){ String failure_cause = ""; switch (reply.getFailure_cause()){ case 0: failure_cause = "无"; break; case 1: failure_cause = "设备编号不匹配"; break; case 2: failure_cause = "枪未处于充电状态"; break; case 3: failure_cause = "其他"; break; } log.error(code1 + ":停机失败:订单号:{},失败原因:{}", chargingOrder.getCode(), failure_cause); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } }else{ log.error(code1 + ":-------------------远程停止充电请求成功-------------------"); stop_status = true; break; } } if(stop_status){ chargingOrder.setEndMode(1); this.updateById(chargingOrder); }else{ log.error(code1 + ":-------------------远程停止充电应答最终失败-------------------"); } }); return AjaxResult.success(); } @@ -1124,7 +953,7 @@ //处理推荐奖励(被推荐首单奖励) TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); long count = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId()) .eq(TChargingOrder::getStatus, 5).isNull(TChargingOrder::getEndMode).eq(TChargingOrder::getDelFlag, 0)); .in(TChargingOrder::getStatus, Arrays.asList(4, 5)).eq(TChargingOrder::getDelFlag, 0)); if(null != appUser.getInviteUserId() && 1 == count){ TIntegralRule integralRule = integralRuleClient.getSet().getData(); String inviteUsersToEarnPoints = integralRule.getInviteUsersToEarnPoints(); @@ -1165,6 +994,7 @@ appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1); appUserIntegralChange.setCreateTime(LocalDateTime.now()); appUserIntegralChange.setOrderCode(chargingOrder.getCode()); appUserIntegralChange.setExtension(chargingOrder.getId().toString()); appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange); appUser1.setPoints(appUser1.getPoints() + num1); @@ -1259,6 +1089,7 @@ BigDecimal electronicMoney = new BigDecimal("0"); BigDecimal serviceMoney = new BigDecimal("0"); for (ChargingOrderVO chargingOrderVO : list) { chargingOrderVO.setUid(chargingOrderVO.getId()+""); TChargingGun data3 = chargingGunClient.getChargingGunById(chargingOrderVO.getChargingGunId()).getData(); TChargingPile data2 = chargingPileClient.getChargingPileById(chargingOrderVO.getChargingPileId()).getData(); if (chargingOrderVO.getSiteId()!=null){ @@ -1272,38 +1103,24 @@ } if (chargingOrderVO.getChargingCapacity()!=null){ total = total.add(chargingOrderVO.getChargingCapacity()); total = total.add(chargingOrderVO.getElectricity()); } // 充电订单 明细记录 List<TChargingOrderAccountingStrategy> chargingOrderId = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>() .eq("charging_order_id", chargingOrderVO.getId())); // 单个订单累计电费 BigDecimal electronicMoney1 = new BigDecimal("0"); // 单个订单累计服务费 BigDecimal serviceMoney1 = new BigDecimal("0"); UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrderVO.getCode()).getData(); if (data5!=null){ chargingOrderVO.setChargingSecond(data5.getCumulative_charging_time()*60L); long l = data5.getCumulative_charging_time() * 60L; chargingOrderVO.setChargingSecond(l); time+=l; } // 总收入 if (chargingOrderVO.getRefundStatus() !=null && chargingOrderVO.getRefundStatus() == 2){ income = income.add(chargingOrderVO.getPaymentAmount().subtract(chargingOrderVO.getRefundAmount())); }else{ if (chargingOrderVO.getPaymentAmount()!=null){ income = income.add(chargingOrderVO.getPaymentAmount()); } electronicMoney = electronicMoney.add(chargingOrderVO.getElectrovalence()); serviceMoney = serviceMoney.add(chargingOrderVO.getServiceCharge()); income = income.add(chargingOrderVO.getServiceCharge().add(chargingOrderVO.getElectrovalence())); if (chargingOrderVO.getRefundAmount()!=null){ income = income.subtract(chargingOrderVO.getRefundAmount()); } for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : chargingOrderId) { // 累计电费 electronicMoney1 = electronicMoney1.add(tChargingOrderAccountingStrategy.getElectrovalence() .multiply(tChargingOrderAccountingStrategy.getChargingCapacity())); electronicMoney = electronicMoney.add(electronicMoney1); // 累计服务费 serviceMoney1 = serviceMoney1.add(tChargingOrderAccountingStrategy.getServiceCharge()); serviceMoney = serviceMoney.add(serviceMoney1); } chargingOrderVO.setServiceCharge(serviceMoney1); chargingOrderVO.setElectrovalence(electronicMoney1); // 充电时段数 int size = chargingOrderId.size(); chargingOrderVO.setCount(size); @@ -1410,7 +1227,36 @@ startTime2 = split[1]; } ChargingOrderTimeVO chargingOrderTimeVO = new ChargingOrderTimeVO(); if (StringUtils.hasLength(dto.getPhone())){ List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData(); if(data!=null){ if (!data.isEmpty()){ dto.setUserIds(data); } }else{ dto.setUserIds(new ArrayList<Long>()); } if (dto.getUserIds().isEmpty()){ List<Long> carIds = dto.getUserIds(); carIds.add(-1L); dto.setUserIds(carIds); } } if (StringUtils.hasLength(dto.getPhone())){ List<Long> data = appUserCarClient.getAppUserCarByLicensePlates(dto.getLicensePlate()).getData(); if(data!=null){ if (!data.isEmpty()){ dto.setCarIds(data); } }else{ dto.setCarIds(new ArrayList<Long>()); } if (dto.getCarIds().isEmpty()){ List<Long> carIds = dto.getCarIds(); carIds.add(-1L); dto.setCarIds(carIds); } } PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2); for (ChargingOrderListVO chargingOrderListVO : list) { @@ -1440,7 +1286,7 @@ // 获取开始SOC 结束soc if (chargingOrderListVO.getCode()!=null){ List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrderListVO.getCode()).getData(); if (!data6.isEmpty()){ if (data6!=null && !data6.isEmpty()){ // 第一条数据soc为开始 最后一条数据soc为结束soc chargingOrderListVO.setStartSoc(data6.get(0).getSoc().toString()); chargingOrderListVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString()); @@ -1705,8 +1551,11 @@ public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) { if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){ //获取当前的计费策略 TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, query.getTransaction_serial_number())); BigDecimal residualAmount = chargingOrder.getRechargeAmount().add(chargingOrder.getVipDiscountAmount()).subtract(query.getPaid_amount()); TChargingOrder chargingOrder1 = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, query.getTransaction_serial_number())); BigDecimal residualAmount = chargingOrder1.getRechargeAmount().add(chargingOrder1.getVipDiscountAmount()).subtract(query.getPaid_amount()); TChargingOrder chargingOrder = new TChargingOrder(); chargingOrder.setId(chargingOrder1.getId()); chargingOrder.setAppUserId(chargingOrder1.getAppUserId()); chargingOrder.setResidualAmount(residualAmount); if(query.getOutput_current().compareTo(BigDecimal.ZERO) != 0){ BigDecimal divide = (query.getOutput_current().multiply(query.getOutput_voltage())).divide(new BigDecimal(1000)); @@ -1716,11 +1565,12 @@ chargingOrder.setPower(divide); chargingOrder.setNeedElec(query.getOutput_current()); TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); TChargingGun chargingGun = new TChargingGun(); chargingGun.setId(chargingOrder1.getChargingGunId()); chargingGun.setChargingPower(divide); chargingGun.setSoc(query.getSoc()); chargingGunClient.updateChargingGunById(chargingGun); } chargingOrder.setChargingCapacity(query.getCharging_degree()); chargingOrder.setElectricity(query.getCharging_degree()); chargingOrder.setTotalElectricity(new BigDecimal(100 - query.getSoc())); this.updateById(chargingOrder); @@ -1766,11 +1616,6 @@ return; } //计算用户标签 editUserTag(chargingOrder); //用户推荐奖励 referralReward(chargingOrder); //如果使用优惠券需要判断优惠券是否满足使用条件 //根据实际的充电金额计算退款金额 退回费用=(原金额/总金额)*(总金额-实际充电金额) //退款金额=优惠券金额+剩余充电金额 @@ -1805,7 +1650,7 @@ invoke = clazz.getMethod("getValley_charge" + (i + 1)).invoke(vo); break; } if(null == invoke || Integer.valueOf(invoke.toString()) == 0){ if(null == invoke || Double.valueOf(invoke.toString()) == 0){ continue; } BigDecimal sharp_peak_charge = new BigDecimal(invoke.toString()); @@ -1824,7 +1669,7 @@ BigDecimal serviceCharge = originalServicePrice; //计算优惠金额 if(null != chargingOrder.getVipDiscount()){ serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount().divide(new BigDecimal(10))).setScale(2, RoundingMode.DOWN); serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.DOWN); } chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge); chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc); @@ -1861,8 +1706,9 @@ BigDecimal discountAmount = BigDecimal.ZERO; if(null != chargingOrder.getVipDiscount()){ //服务费折扣 discountAmount = periodServicePrice_total.multiply((new BigDecimal(10).subtract(chargingOrder.getVipDiscount())).divide(new BigDecimal(10))); discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount()))); periodServicePrice_total = periodServicePrice_total.multiply(chargingOrder.getVipDiscount()); TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); if(null != appUser.getVipId()){ //判断会员是否还有充电优惠次数 @@ -1915,9 +1761,17 @@ if(1 == preferentialMode){ //满减 if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){ refundAmount = refundAmount.add(tCoupon.getDiscountAmount()); order.setCouponDiscountAmount(tCoupon.getDiscountAmount()); payAmount = payAmount.subtract(tCoupon.getDiscountAmount()); BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount(); //如果优惠金额大于服务费金额,以服务费作为最大限制 if(periodServicePrice_total.compareTo(couponDiscountAmount) < 0){ refundAmount = refundAmount.add(periodServicePrice_total); order.setCouponDiscountAmount(periodServicePrice_total); payAmount = payAmount.subtract(periodServicePrice_total); }else{ refundAmount = refundAmount.add(couponDiscountAmount); order.setCouponDiscountAmount(couponDiscountAmount); payAmount = payAmount.subtract(couponDiscountAmount); } }else{ order.setAppCouponId(null); order.setCouponDiscountAmount(BigDecimal.ZERO); @@ -1930,9 +1784,16 @@ //折扣金额 BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10)); divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide; refundAmount = refundAmount.add(divide); order.setCouponDiscountAmount(divide); payAmount = payAmount.subtract(divide); //如果优惠金额大于服务费金额,以服务费作为最大限制 if(periodServicePrice_total.compareTo(divide) < 0){ refundAmount = refundAmount.add(periodServicePrice_total); order.setCouponDiscountAmount(periodServicePrice_total); payAmount = payAmount.subtract(periodServicePrice_total); }else{ refundAmount = refundAmount.add(divide); order.setCouponDiscountAmount(divide); payAmount = payAmount.subtract(divide); } }else{ order.setAppCouponId(null); order.setCouponDiscountAmount(BigDecimal.ZERO); @@ -1947,10 +1808,10 @@ chargingOrder = this.getById(order.getId()); // 将枪状态重置为空闲 TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); TChargingGun chargingGun = new TChargingGun(); chargingGun.setId(chargingOrder.getChargingGunId()); chargingGun.setStatus(2); chargingGun.setChargingPower(BigDecimal.ZERO); chargingGun.setSoc(0); chargingGunClient.updateChargingGunById(chargingGun); //添加积分 @@ -1976,10 +1837,15 @@ appUserIntegralChange.setCurrentIntegral(appUser.getPoints()); appUserIntegralChange.setCreateTime(LocalDateTime.now()); appUserIntegralChange.setOrderCode(chargingOrder.getCode()); appUserIntegralChange.setExtension(chargingOrder.getId().toString()); appUserClient.updateAppUser(appUser); appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange); } //计算用户标签 editUserTag(chargingOrder); //用户推荐奖励 referralReward(chargingOrder); //开始构建退款费用 if(refundAmount.compareTo(BigDecimal.ZERO) > 0){ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java
@@ -63,12 +63,14 @@ if(Objects.nonNull(tChargingOrder)){ item.setChargingOrder(tChargingOrder); SiteNameVO siteNameVO = chargingGunClient.getAllInfoById(tChargingOrder.getChargingGunId()).getData(); item.setGunName(siteNameVO.getGunName()); item.setGunNumber(siteNameVO.getGunNumber()); item.setPileName(siteNameVO.getPileName()); item.setPileNumber(siteNameVO.getPileNumber()); item.setSiteName(siteNameVO.getSiteName()); item.setEndMode(tChargingOrder.getEndMode()); if(Objects.nonNull(siteNameVO)){ item.setGunName(siteNameVO.getGunName()); item.setGunNumber(siteNameVO.getGunNumber()); item.setPileName(siteNameVO.getPileName()); item.setPileNumber(siteNameVO.getPileNumber()); item.setSiteName(siteNameVO.getSiteName()); item.setEndMode(tChargingOrder.getEndMode()); } } }else if (item.getOrderType() == 2) { TShoppingOrder tShoppingOrder = shoppingOrders.stream().filter(shoppingOrder -> shoppingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -347,6 +347,7 @@ appUser.setPoints(appUser.getPoints() + num1); appUserClient.updateAppUser(appUser); TChargingOrder chargingOrder = chargingOrderService.getById(orderEvaluate.getOrderId()); //积分变动明细 TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange(); appUserIntegralChange.setAppUserId(appUser.getId()); @@ -354,7 +355,8 @@ appUserIntegralChange.setHistoricalIntegral(points); appUserIntegralChange.setCurrentIntegral(points + num1); appUserIntegralChange.setCreateTime(LocalDateTime.now()); appUserIntegralChange.setOrderCode(orderEvaluate.getId().toString()); appUserIntegralChange.setOrderCode(chargingOrder.getCode()); appUserIntegralChange.setExtension(orderEvaluate.getOrderId().toString()); appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange); } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderInvoiceServiceImpl.java
@@ -272,6 +272,10 @@ .map(TOrderInvoiceDetail::getOrderId).collect(Collectors.toList()); // 将其全部转化为String tOrderInvoiceVO.setIds(collect.stream().map(String::valueOf).collect(Collectors.toList())); TAppUser appUser = appUserClient.getUserById(tOrderInvoiceVO.getAppUserId()).getData(); if (appUser!=null){ tOrderInvoiceVO.setUserPhone(appUser.getPhone()); } } // 查询这个开票的订单ids @@ -293,11 +297,6 @@ 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()); if (e.getBillingUserId()!=null){ e.setUserPhone(finalTAppUsers.stream().filter(t->t.getId()!=null).filter(m->m.getId().equals(Long.parseLong(e.getBillingUserId().toString()))).findFirst().get().getPhone()); } TAppUser appUser = appUserClient.getUserById(e.getAppUserId()).getData(); e.setUserPhone(appUser.getPhone()); }); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -153,7 +153,9 @@ discount = discount.add(tActivityStatisticslVO.getVipDiscountAmount()); stringBuilder1.append("会员抵扣").append("+"); } stringBuilder1.deleteCharAt(stringBuilder1.length()-1); if (stringBuilder1.length()>0){ stringBuilder1.deleteCharAt(stringBuilder1.length()-1); } tActivityStatisticslVO.setType(stringBuilder1.toString()); tActivityStatisticslVO.setTime(tActivityStatisticslVO.getCreateTime()); break; @@ -202,7 +204,7 @@ public Map<String, Object> getMyShoppingOrderList(GetMyShoppingOrderList query) { Long userId = tokenService.getLoginUserApplet().getUserId(); LambdaQueryWrapper<TShoppingOrder> wrapper = new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0) .eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2).notIn(TShoppingOrder::getStatus, Arrays.asList(4, 5)); .eq(TShoppingOrder::getAppUserId, userId).eq(TShoppingOrder::getPaymentStatus, 2).notIn(TShoppingOrder::getStatus, Arrays.asList(5)); if(query.getStatus() != 0){ wrapper.eq(TShoppingOrder::getStatus, query.getStatus()); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/task/TaskUtil.java
@@ -47,9 +47,11 @@ // @Scheduled(cron = "0 0 0 2 * ?") // 每天凌晨12点执行的定时任务 @Scheduled(cron = "0 0 12 2 * ?") @Scheduled(cron = "0 0 12 1 * ?") public void taskMonth() { try { System.err.println("执行定时任务生成账单"); // 获取上个月的开始和结束日期 LocalDate firstDayOfLastMonth = LocalDate.now().minusMonths(1). withDayOfMonth(2); @@ -65,6 +67,7 @@ .collect(Collectors.joining()); // 将其连接成一个字符串 tChargingBill.setCode("JSD"+string+randomDigits ); tChargingBill.setType(1); tChargingBill.setSiteId(0); tChargingBill.setBillTime(LocalDateTime.now()); tChargingBill.setStatus(1); tChargingBill.setOrderState(2); @@ -72,13 +75,13 @@ // 每月二号给每个站点生成上月账单 List<Integer> collect = siteClient.getSiteAll().getData().stream().map(Site::getId).collect(Collectors.toList()); List<TChargingBill> tChargingBills = new ArrayList<>(); for (int i = 1; i <= collect.size(); i++) { for (int i = 0; i < collect.size(); i++) { TChargingBill tChargingBill1 = new TChargingBill(); Random random1 = new Random(); String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9 .mapToObj(String::valueOf) .collect(Collectors.joining()); // 将其连接成一个字符串 tChargingBill1.setCode("JSD"+string+randomDigits1+i ); tChargingBill1.setCode("JSD"+string+randomDigits1+(i+1) ); tChargingBill1.setType(2); tChargingBill1.setSiteId(collect.get(i)); tChargingBill1.setBillTime(LocalDateTime.now()); @@ -86,6 +89,7 @@ tChargingBill1.setOrderState(2); tChargingBills.add(tChargingBill1); } System.err.println("列表"+tChargingBills); if (!tChargingBills.isEmpty())chargingBillService.saveBatch(tChargingBills); } catch (Exception e) { @@ -93,7 +97,7 @@ } } // 每个月最后一天23点执行的定时任务 @Scheduled(cron = "0 0 23 L * ?") @Scheduled(cron = "0 0 12 1 * ?") public void taskLastDay() { try { // 获取上个月的开始和结束日期 ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml
@@ -89,7 +89,7 @@ nacos: discovery: # 开发环境 server-addr: 192.168.110.169:8848 # nacos注册中心地址 server-addr: 192.168.110.169:8848 namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 group: DEFAULT_GROUP application: seata-server #Nacos 中 Seata 名称 @@ -121,6 +121,7 @@ namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a username: nacos password: nacos ip: 192.168.110.111 config: # 配置中心地址 server-addr: 192.168.0.137:8848,192.168.0.123:8848 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -52,7 +52,7 @@ <select id="getMyChargingOrderList" resultMap="BaseResultMap"> select * from t_charging_order where del_flag = 0 and app_user_id = #{appUserId} select * from t_charging_order where del_flag = 0 and app_user_id = #{appUserId} and recharge_payment_status = 2 <if test="1 == type"> and id not in (select order_id from t_order_evaluate where order_type = 1 and app_user_id = #{appUserId} and del_flag = 0) </if> @@ -107,6 +107,7 @@ <if test="endTime1 != null and endTime1!=''"> and (t1.end_time between #{endTime1} and #{endTime2}) </if> and t1.del_flag = 0 </select> <select id="payOrderQuery" resultType="com.ruoyi.order.dto.PayOrderDto"> SELECT o.*,i.phone FROM (SELECT @@ -187,6 +188,7 @@ LEFT JOIN `charging_pile_account`.`t_app_user` i on o.app_user_id = i.id <where> o.del_flag = 0 <if test="data.code != null and data.code != ''"> AND o.code LIKE CONCAT('%',#{data.code},'%') </if> @@ -366,7 +368,7 @@ </select> <select id="countAll" resultType="java.util.Map"> select sum(electrovalence) as electrovalence,sum(service_charge) as service_charge,sum(commission_amount) as commission_amount,sum(sharing_amount) as sharing_amount select sum(electrovalence) as electrovalence,sum(service_charge) as service_charge,ROUND(sum(order_amount) * 0.0006, 2) as commission_amount,sum(sharing_amount) as sharing_amount from t_charging_order where create_time >= #{sixBefore} and del_flag = 0 and recharge_payment_status = 2 </select> @@ -400,12 +402,12 @@ t_charging_order <where> del_flag = 0 and recharge_payment_status = 2 and DATE(create_time) = CURDATE() <if test="chargingOrderIds != null and chargingOrderIds.size() > 0"> AND id IN <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")"> #{chargingOrderId} </foreach> </if> </where> GROUP BY time @@ -424,12 +426,12 @@ t_charging_order <where> del_flag = 0 and recharge_payment_status = 2 and YEARWEEK(DATE_FORMAT(create_time, '%Y-%m-%d'), 1) = YEARWEEK(NOW(), 1) <if test="chargingOrderIds != null and chargingOrderIds.size() > 0"> AND id IN <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")"> #{chargingOrderId} </foreach> </if> </where> GROUP BY time @@ -448,12 +450,12 @@ t_charging_order <where> del_flag = 0 and recharge_payment_status = 2 and MONTH(create_time) = MONTH(NOW()) AND YEAR(create_time) = YEAR(NOW()) <if test="chargingOrderIds != null and chargingOrderIds.size() > 0"> AND id IN <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")"> #{chargingOrderId} </foreach> </if> </where> GROUP BY time @@ -473,12 +475,12 @@ t_charging_order <where> del_flag = 0 and recharge_payment_status = 2 and YEAR(create_time) = YEAR(NOW()) <if test="chargingOrderIds != null and chargingOrderIds.size() > 0"> AND id IN <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")"> #{chargingOrderId} </foreach> </if> </where> GROUP BY time @@ -497,12 +499,12 @@ t_charging_order <where> del_flag = 0 and recharge_payment_status = 2 <if test="chargingOrderIds != null and chargingOrderIds.size() > 0"> AND id IN <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")"> #{chargingOrderId} </foreach> </if> </where> GROUP BY time @@ -773,6 +775,7 @@ SELECT count(1) as counts,vehicle_use from charging_pile_account.t_app_user_car where del_flag = 0 GROUP BY vehicle_use </select> <select id="carUserBrand" resultType="java.util.Map"> @@ -780,6 +783,7 @@ SELECT count(1) as counts,vehicle_brand from charging_pile_account.t_app_user_car where del_flag = 0 GROUP BY vehicle_brand </select> <select id="countLocalCar" resultType="java.util.Map"> ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml
@@ -44,9 +44,18 @@ 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 t9.code ,t9.order_amount as orderAmount, t9.coupon_discount_amount as couponDiscountAmount, t9.vip_discount_amount as vipDiscountAmount, t9.payment_amount as paymentAmount, t9.create_time as createTime, 1 as orderType from t_charging_order t9 where t9.id = 0 limit 1 <if test="req.orderType == null or req.orderType == 1"> <if test="req.type == null or req.type == 1 or req.type == 2"> select t1.code ,t1.order_amount as orderAmount, 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, @@ -98,13 +107,13 @@ and t2.code LIKE CONCAT('%',#{req.code},'%') </if> <if test="req.type != null and req.type != '' and req.type == 1"> and t2.coupon_discount_amount IS NOT NULL and t2.coupon_discount_amount != 0 and (t2.coupon_discount_amount > 0) </if> <if test="req.type != null and req.type != '' and req.type == 2"> and t2.vip_discount_amount IS NOT NULL and t2.vip_discount_amount != 0 and ( t2.vip_discount_amount > 0) </if> <if test="req.type == null "> and t2.vip_discount_amount IS NOT NULL and t2.vip_discount_amount != 0 and t2.coupon_discount_amount IS NOT NULL and t2.coupon_discount_amount != 0 and (t2.vip_discount_amount > 0 or t2.coupon_discount_amount > 0) </if> <if test="null != req.userIds and req.userIds.size()>0" > and t2.app_user_id in @@ -115,7 +124,6 @@ <if test="req.endTime != null and req.endTime != '' and req.startTime != null and req.startTime != ''"> AND (t2.create_time between CONCAT(#{req.startTime},':00') and CONCAT(#{req.endTime},':59')) </if> and t2.refund_status !=2 and t2.payment_status =2 AND t2.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} </if> ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java
@@ -1,14 +1,37 @@ package com.ruoyi.order; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.account.api.feignClient.*; import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.integration.api.feignClient.*; import com.ruoyi.integration.api.model.ChargingHandshake; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.dto.ChargingDetails; import com.ruoyi.order.dto.MyChargingOrderInfo; import com.ruoyi.order.service.TChargingOrderService; import com.ruoyi.order.mapper.TSettlementConfirmMapper; import com.ruoyi.order.service.*; import com.ruoyi.other.api.feignClient.IntegralRuleClient; import com.ruoyi.other.api.feignClient.UserTagClient; import com.ruoyi.other.api.feignClient.VipClient; import com.ruoyi.payment.api.feignClient.AliPaymentClient; import com.ruoyi.payment.api.feignClient.WxPaymentClient; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; import java.io.PrintWriter; import java.math.BigDecimal; import java.util.Arrays; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiOrderApplication.class) public class RuoYiOrderApplicationTests { @@ -16,10 +39,137 @@ @Resource private TChargingOrderService chargingOrderService; @Resource private ChargingGunClient chargingGunClient; @Resource private TSettlementConfirmMapper tSettlementConfirmMapper; @Resource private SiteClient siteClient; @Resource private AppUserCarClient appUserCarClient; @Resource private AppUserClient appUserClient; @Resource private ChargingPileClient chargingPileClient; @Resource private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; @Resource private TokenService tokenService; @Resource private WxPaymentClient wxPaymentClient; @Resource private AliPaymentClient aliPaymentClient; @Resource private AppCouponClient appCouponClient; @Resource private AppUserVipDetailClient appUserVipDetailClient; @Resource private RedisService redisService; @Resource private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; @Resource private ChargingHandshakeClient chargingHandshakeClient; @Resource private SendMessageClient sendMessageClient; @Resource private TOrderEvaluateService orderEvaluateService; @Resource private AccountingStrategyDetailClient accountingStrategyDetailClient; @Resource private AccountingStrategyDetailOrderClient accountingStrategyDetailOrderClient; @Resource private AccountingStrategyClient accountingStrategyClient; @Resource private PlatformStartChargingReplyClient platformStartChargingReplyClient; @Resource private TChargingOrderRefundService chargingOrderRefundService; @Resource private PlatformStopChargingReplyClient platformStopChargingReplyClient; @Resource private AccountingStrategyOrderService accountingStrategyOrderService; @Resource private AccountingStrategyDetailOrderService accountingStrategyDetailOrderService; @Resource private InviteUserClient inviteUserClient; @Resource private AppUserIntegralChangeClient appUserIntegralChangeClient; @Resource private IntegralRuleClient integralRuleClient; @Resource private VipClient vipClient; @Resource private UserTagClient userTagClient; @Resource private AppUserTagClient appUserTagClient; @Resource private SecurityDetectionClient securityDetectionClient; @Test public void test(){ MyChargingOrderInfo myChargingOrderInfo = chargingOrderService.getMyChargingOrderInfo("1846484071567437825"); System.err.println(JSON.toJSONString(myChargingOrderInfo)); Integer id = 75; TChargingOrder one = chargingOrderService.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, 1839480334642704385L).eq(TChargingOrder::getChargingGunId, id) .eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getDelFlag, 0).orderByDesc(TChargingOrder::getStartTime).last(" limit 0, 1")); ChargingDetails chargingDetails = new ChargingDetails(); chargingDetails.setId(one.getId().toString()); TChargingGun chargingGun = chargingGunClient.getChargingGunById(id).getData(); TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData(); Site site = siteClient.getSiteByIds(Arrays.asList(chargingPile.getSiteId())).getData().get(0); chargingDetails.setName(site.getName() + "-" + chargingPile.getName()); chargingDetails.setCode(one.getCode()); chargingDetails.setStatus(one.getStatus()); chargingDetails.setChargingCost(one.getResidualAmount()); UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData(); if(null != data){ chargingDetails.setChargeCurrent(data.getOutput_current()); chargingDetails.setChargeVoltage(data.getOutput_voltage()); BigDecimal power = data.getOutput_current().multiply(data.getOutput_voltage()).divide(new BigDecimal(1000)); chargingDetails.setChargePower(power); chargingDetails.setCompletionRatio(data.getSoc()); chargingDetails.setRemainingChargeTime(data.getTime_remaining()); chargingDetails.setChargedDegrees(data.getCharging_degree()); Integer h = Integer.valueOf(data.getCumulative_charging_time() / 60); Integer m = Integer.valueOf(data.getCumulative_charging_time() % 60); chargingDetails.setChargedTime(String.format("%02d", h) + ":" + String.format("%02d", m)); } ChargingHandshake chargingHandshake = chargingHandshakeClient.getDataByOrderCode(one.getCode()).getData(); if(null != chargingHandshake && null != data && null != one.getAppUserCarId()){ BigDecimal bms_battery_capacity = chargingHandshake.getBms_battery_capacity(); TAppUserCar appUserCar = appUserCarClient.getCarByIds(Arrays.asList(one.getAppUserCarId())).getData().get(0); // 续航 = 电池容量 / 续航里程 * soc BigDecimal divide = bms_battery_capacity.divide(new BigDecimal(appUserCar.getEndurance())); BigDecimal multiply = new BigDecimal(data.getSoc() / 100).multiply(divide); chargingDetails.setEndurance(multiply); } System.err.println(JSON.toJSONString(chargingDetails)); } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
@@ -129,7 +129,7 @@ if (goodType==1){ TGoods byId = goodsService.getById(id); if (byId==null||byId.getStatus()==2){ return R.fail(2,"内容不存在"); return R.fail(2,"该商品已不存在"); } // List<Integer> data = orderClient.getSalesCountByGoodsId(String.valueOf(id)).getData(); // for (int i = 0; i < list.size(); i++) { @@ -141,7 +141,7 @@ else { TCoupon byId = couponService.getById(id); if (byId==null||byId.getStatus()==2){ return R.fail(2,"内容不存在"); return R.fail(2,"该商品已不存在"); } return R.ok(byId); } @@ -215,8 +215,10 @@ return AjaxResult.error("当前用户已兑换"+count+"张"); }else { //减少库存 good.setInventory(good.getInventory()-exchangeDto.getNum()); goodsService.updateById(good); if (good.getInventory()!=-1) { good.setInventory(good.getInventory() - exchangeDto.getNum()); goodsService.updateById(good); } } if (user.getPoints()<good.getRedeemPoints()){ return AjaxResult.error("当前用户积分不足"); @@ -232,8 +234,10 @@ if (coupon.getInventoryQuantity() != -1 && count >= coupon.getInventoryQuantity()) { return AjaxResult.error("当前用户已到达兑换"+coupon+"次"); }else { coupon.setInventoryQuantity(coupon.getInventoryQuantity()-1); couponService.updateById(coupon); if (coupon.getInventoryQuantity()!=-1) { coupon.setInventoryQuantity(coupon.getInventoryQuantity() - 1); couponService.updateById(coupon); } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
@@ -309,7 +309,7 @@ switch (buyType){ case 1: if (byId.getMonthlyCardDiscountStart()!=null&&(now.isAfter(byId.getMonthlyCardDiscountStart())&&now.isBefore(byId.getMonthlyCardDiscountEnd()))){ payMoney = byId.getMonthlyCard().multiply(byId.getMonthlyCardDiscount()); payMoney = byId.getMonthlyCard().multiply(byId.getMonthlyCardDiscount().divide(new BigDecimal(10))); discountMoney = byId.getMonthlyCard().subtract(payMoney); discount = byId.getMonthlyCardDiscount(); }else { @@ -318,7 +318,7 @@ break; case 2: if (byId.getSeasonCardDiscountStart()!=null&&(now.isAfter(byId.getSeasonCardDiscountStart())&&now.isBefore(byId.getSeasonCardDiscountEnd()))){ payMoney = byId.getSeasonCard().multiply(byId.getSeasonCardDiscount()); payMoney = byId.getSeasonCard().multiply(byId.getSeasonCardDiscount().divide(new BigDecimal(10))); discountMoney = byId.getSeasonCard().subtract(payMoney); discount = byId.getSeasonCardDiscount(); }else { @@ -327,7 +327,7 @@ break; case 3: if (byId.getAnnualCardDiscountStart()!=null&&(now.isAfter(byId.getAnnualCardDiscountStart())&&now.isBefore(byId.getAnnualCardDiscountEnd()))){ payMoney = byId.getAnnualCard().multiply(byId.getAnnualCardDiscount()); payMoney = byId.getAnnualCard().multiply(byId.getAnnualCardDiscount().divide(new BigDecimal(10))); discountMoney = byId.getAnnualCard().subtract(payMoney); discount = byId.getAnnualCardDiscount(); }else {