订单改版中--未完成代码
This commit is contained in:
parent
dfeb83d111
commit
f44d78c94c
@ -37,6 +37,21 @@ public class Result<T> implements Serializable {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Result<T> error(String errMsg) {
|
||||
this.status = 1;
|
||||
this.code = CodeMsg.ERROR.getCode();
|
||||
this.msg = errMsg;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Result<T> error(String errMsg, T data) {
|
||||
this.status = 1;
|
||||
this.code = CodeMsg.ERROR.getCode();
|
||||
this.msg = errMsg;
|
||||
this.data = data;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Result<T> error(CodeMsg codeMsg) {
|
||||
this.status = 1;
|
||||
this.code = codeMsg.getCode();
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.evotech.hd.common.core.Dto;
|
||||
package com.evotech.hd.common.core.Dto.device;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.evotech.hd.common.core.Dto.result.home;
|
||||
package com.evotech.hd.common.core.Dto.home;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.evotech.hd.common.core.Dto.result.home;
|
||||
package com.evotech.hd.common.core.Dto.home;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.evotech.hd.common.core.Dto.result.home;
|
||||
package com.evotech.hd.common.core.Dto.home;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
@ -1,4 +1,4 @@
|
||||
package com.evotech.hd.common.core.Dto.result.home;
|
||||
package com.evotech.hd.common.core.Dto.home;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package com.evotech.hd.common.core.Dto.result.home;
|
||||
package com.evotech.hd.common.core.Dto.home;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
@ -0,0 +1,52 @@
|
||||
package com.evotech.hd.common.core.Dto.order;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:OrderListVo
|
||||
* @date: 2025年05月16日 13:54
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Data
|
||||
@Schema(name = "订单列表")
|
||||
public class OrderListVo {
|
||||
|
||||
@Schema(description = "唯一标识")
|
||||
private Integer pkId;
|
||||
|
||||
@Schema(description = "订单编号")
|
||||
private String orderNo;
|
||||
|
||||
@Schema(name = "订单类型", description = "1=换电;2=充电")
|
||||
private Integer orderType;
|
||||
|
||||
@Schema(name = "车牌号")
|
||||
private String plateNum;
|
||||
|
||||
@Schema(name = "换电站")
|
||||
private String stationName;
|
||||
|
||||
@Schema(name = "预约人")
|
||||
private String perName;
|
||||
|
||||
@Schema(name = "订单时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
private Date orderTime;
|
||||
|
||||
@Schema(name = "订单状态", description = "订单状态:1-已创建,2-换电中,3-换电完成,4-充电中,5-充电完成,6-待结算,7-已完成,9-已取消, -1-退款")
|
||||
private Integer orderStatus;
|
||||
|
||||
@Schema(name = "交易编码", description = "第三方收款返回的唯一标识")
|
||||
private String notifyOrderNo;
|
||||
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
package com.evotech.hd.common.core.Dto.request.order;
|
||||
|
||||
import com.evotech.hd.common.core.entity.BasePageRequest;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:OrderRequest
|
||||
* @date: 2025年05月16日 15:28
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Data
|
||||
@Schema(name = "查询订单请求参数", hidden = true)
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
public class OrderRequest extends BasePageRequest {
|
||||
|
||||
@Schema(description = "订单编码")
|
||||
private String orderNo;
|
||||
|
||||
@Schema(description = "车牌号")
|
||||
private String plateNum;
|
||||
|
||||
@Schema(description = "订单时间开始", example = "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 Date orderTimeBegin;
|
||||
|
||||
@Schema(description = "订单时间结束")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
private Date orderTimeEnd;
|
||||
|
||||
@Schema(description = "换电站编码")
|
||||
private String stationCode;
|
||||
|
||||
@Schema(description = "交易编码")
|
||||
private String tradeNo;
|
||||
|
||||
@Schema(description = "订单状态:1-已创建,2-换电中,3-换电完成,4-充电中,5-充电完成,6-待结算,7-已完成,9-已取消")
|
||||
private String status;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -2,6 +2,16 @@ package com.evotech.hd.common.core.constant;
|
||||
|
||||
public interface HDConstant {
|
||||
|
||||
/***
|
||||
* 全局删除标识-已删除
|
||||
*/
|
||||
final static Integer DELETE_YES = 1;
|
||||
|
||||
/***
|
||||
* 全局删除标识-未删除
|
||||
*/
|
||||
final static Integer DELETE_NO = 0;
|
||||
|
||||
/***
|
||||
* 大华设备相关CONSTANT
|
||||
*/
|
||||
@ -12,6 +22,108 @@ public interface HDConstant {
|
||||
|
||||
}
|
||||
|
||||
/***
|
||||
* 订单相关参数
|
||||
*/
|
||||
final class OrderConstant{
|
||||
|
||||
/***
|
||||
* 计费方式-ODO(里程数)
|
||||
*/
|
||||
public static final int FEE_TYPE_ODO = 1;
|
||||
/***
|
||||
* 计费方式-SOC(电池百分比)
|
||||
*/
|
||||
public static final int FEE_TYPE_SOC = 2;
|
||||
/***
|
||||
* 计费方式-电量
|
||||
*/
|
||||
public static final int FEE_TYPE_DL = 3;
|
||||
/***
|
||||
* 换电模式 全自动
|
||||
*/
|
||||
public static final Integer CHANGE_MODE_AUTOMATIC = 1;
|
||||
/***
|
||||
* 换电模式 半自动
|
||||
*/
|
||||
public static final Integer CHANGE_MODE_AUTOMATIC_SEMI = 2;
|
||||
/***
|
||||
* 换电模式 人工干预
|
||||
*/
|
||||
public static final Integer CHANGE_MODE_ARTIFICIAL = 3;
|
||||
/***
|
||||
* 换电车道 A
|
||||
*/
|
||||
public static final Integer CHANGE_LANE_A = 1;
|
||||
/***
|
||||
* 换电车道 B
|
||||
*/
|
||||
public static final Integer CHANGE_LANE_B = 2;
|
||||
|
||||
/***
|
||||
* 订单类型-充电
|
||||
*/
|
||||
public static final Integer ORDER_TYPE_CHARGING = 2;
|
||||
/***
|
||||
* 订单类型-换电
|
||||
*/
|
||||
public static final Integer ORDER_TYPE_SWAP = 1;
|
||||
|
||||
/***
|
||||
* 支付方式-支付宝支付
|
||||
*/
|
||||
public static final String PAY_TYPE_ALI_PAY = "aliPay";
|
||||
/***
|
||||
* 支付方式-微信支付
|
||||
*/
|
||||
public static final String PAY_TYPE_WECHAT_PAY = "wechatPay";
|
||||
/***
|
||||
* 支付方式-余额支付
|
||||
*/
|
||||
public static final String PAY_TYPE_BALANCE_PAY = "balancePay";
|
||||
|
||||
|
||||
|
||||
//
|
||||
// /***
|
||||
// * 订单状态-已创建
|
||||
// */
|
||||
// public static final Integer ORDER_STATUS_CREATE = 1;
|
||||
// /***
|
||||
// * 订单状态-换电中
|
||||
// */
|
||||
// public static final Integer ORDER_STATUS_BATTERY_SWAPPING = 2;
|
||||
// /***
|
||||
// * 订单状态-换电完成
|
||||
// */
|
||||
// public static final Integer ORDER_STATUS_BATTERY_SWAPPING_END = 3;
|
||||
// /***
|
||||
// * 订单状态-充电中
|
||||
// */
|
||||
// public static final Integer ORDER_STATUS_CHARGING = 4;
|
||||
// /***
|
||||
// * 订单状态-充电完成
|
||||
// */
|
||||
// public static final Integer ORDER_STATUS_CHARGING_END = 5;
|
||||
// /***
|
||||
// * 订单状态-待结算
|
||||
// */
|
||||
// public static final Integer ORDER_STATUS_TO_BE_SETTLED = 6;
|
||||
// /***
|
||||
// * 订单状态-已完成
|
||||
// */
|
||||
// public static final Integer ORDER_STATUS_END = 7;
|
||||
// /***
|
||||
// * 订单状态-已取消
|
||||
// */
|
||||
// public static final Integer ORDER_STATUS_CLOSE = 9;
|
||||
// /***
|
||||
// * 订单状态-退款
|
||||
// */
|
||||
// public static final Integer ORDER_STATUS_REFUND = -1;
|
||||
|
||||
}
|
||||
|
||||
/***
|
||||
* 大华设备相关CONSTANT
|
||||
*/
|
||||
@ -33,7 +145,6 @@ public interface HDConstant {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/***
|
||||
* 权限相关CONSTANT
|
||||
*/
|
||||
@ -113,14 +224,14 @@ public interface HDConstant {
|
||||
*/
|
||||
String JWT_PAYLOAD_KEY = "payload";
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* jwt中添加的属性
|
||||
*/
|
||||
String USER_ID_KEY = "uid";
|
||||
String ROLE_CODE_KEY = "rcodes";
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 登陆验证码缓存key
|
||||
* hd:login:captcha: + captchaId
|
||||
@ -132,37 +243,37 @@ public interface HDConstant {
|
||||
* key: hd:login:jti:token
|
||||
*/
|
||||
String LOGIN_CACHE_KEY_PREFIX = "hd:login:";
|
||||
|
||||
|
||||
/**
|
||||
* 缓存系统token有效时间,s
|
||||
*/
|
||||
String HD_CACHE_TOKEN_EXP_KEY = "hd:cache:tokenExp";
|
||||
|
||||
|
||||
/**
|
||||
* 资源权限类型
|
||||
*/
|
||||
String RESOURCE_TYPE_PERM = "PER";
|
||||
String RESOURCE_TYPE_MENU = "MENU";
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 交换数据非对称加密RSA秘钥前缀
|
||||
*/
|
||||
String HD_STATION_SECRET_KEY_RSA_PREFIX = "hd:station:secretKey:rsa:";
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 交换数据对称加密AES秘钥前缀
|
||||
* 交换数据对称加密AES秘钥前缀
|
||||
*/
|
||||
String HD_STATION_SECRET_KEY_AES_PREFIX = "hd:station:secretKey:aes:";
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 微信服务请求头中权限验证字段
|
||||
*/
|
||||
String WECHAT_SERVER_AUTHORIZATION_KEY = "WXUID";
|
||||
String WECHAT_SERVER_TOKEN_KEY = "WXTOKEN";
|
||||
|
||||
|
||||
/**
|
||||
* 微信登录缓存数据前缀
|
||||
*/
|
||||
|
||||
@ -1,43 +1,43 @@
|
||||
package com.evotech.hd.common.core.dao.cloud;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.evotech.hd.common.core.Dto.request.HomeRequestDto;
|
||||
import com.evotech.hd.common.core.Dto.result.home.*;
|
||||
import com.evotech.hd.common.core.constant.HDConstant;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
|
||||
import com.evotech.hd.common.core.permission.DataScope;
|
||||
import com.evotech.hd.common.core.permission.DataScopes;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zrb
|
||||
* @since 2024-11-22
|
||||
*/
|
||||
@DataScopes({
|
||||
@DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE),
|
||||
@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "plate_num", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_CAR_CODE),
|
||||
})
|
||||
//@DataScopeOpenMethod(openMethod = true, methodName = {"homeFindHalfYearAmountData"})
|
||||
public interface OrderSwapBatteryDao extends BaseMapper<OrderSwapBattery> {
|
||||
|
||||
|
||||
List<HomeOrderSwapBatteryProportionDto> homeFindProportionData(@Param("params") HomeRequestDto params);
|
||||
|
||||
List<HomeOrderSwapBatteryAmountDto> homeFindAmountData(@Param("params") HomeRequestDto params);
|
||||
|
||||
List<HomeOrderSwapBatteryHalfYearDto> homeFindHalfYearOrderData(@Param("params") HomeRequestDto params);
|
||||
|
||||
// @DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, tableAlias = "osb", permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE)
|
||||
List<HomeOrderSwapBatteryHalfYearAmountDto> homeFindHalfYearAmountData(@Param("params") HomeRequestDto params);
|
||||
//因为站端不需要显示金额, 所有重新写一个
|
||||
List<HomeOrderSwapBatteryHalfYearAmountDto> homeFindHalfYearStationAmountData(@Param("params") HomeRequestDto params);
|
||||
|
||||
Long homeFindOrderCountData(@Param("date") Date date);
|
||||
|
||||
Double homeFindOrderAmountData(@Param("date") Date date);
|
||||
|
||||
List<HomeOrderInfo> findOrderListByStatus(@Param("status") Integer status);
|
||||
}
|
||||
//package com.evotech.hd.common.core.dao.cloud;
|
||||
//
|
||||
//import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
//import com.evotech.hd.common.core.Dto.request.HomeRequestDto;
|
||||
//import com.evotech.hd.common.core.Dto.result.home.*;
|
||||
//import com.evotech.hd.common.core.constant.HDConstant;
|
||||
//import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
|
||||
//import com.evotech.hd.common.core.permission.DataScope;
|
||||
//import com.evotech.hd.common.core.permission.DataScopes;
|
||||
//import org.apache.ibatis.annotations.Param;
|
||||
//
|
||||
//import java.util.Date;
|
||||
//import java.util.List;
|
||||
//
|
||||
///**
|
||||
// * @author zrb
|
||||
// * @since 2024-11-22
|
||||
// */
|
||||
//@DataScopes({
|
||||
// @DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE),
|
||||
// @DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "plate_num", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_CAR_CODE),
|
||||
//})
|
||||
////@DataScopeOpenMethod(openMethod = true, methodName = {"homeFindHalfYearAmountData"})
|
||||
//public interface OrderSwapBatteryDao extends BaseMapper<OrderSwapBattery> {
|
||||
//
|
||||
//
|
||||
// List<HomeOrderSwapBatteryProportionDto> homeFindProportionData(@Param("params") HomeRequestDto params);
|
||||
//
|
||||
// List<HomeOrderSwapBatteryAmountDto> homeFindAmountData(@Param("params") HomeRequestDto params);
|
||||
//
|
||||
// List<HomeOrderSwapBatteryHalfYearDto> homeFindHalfYearOrderData(@Param("params") HomeRequestDto params);
|
||||
//
|
||||
//// @DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, tableAlias = "osb", permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE)
|
||||
// List<HomeOrderSwapBatteryHalfYearAmountDto> homeFindHalfYearAmountData(@Param("params") HomeRequestDto params);
|
||||
// //因为站端不需要显示金额, 所有重新写一个
|
||||
// List<HomeOrderSwapBatteryHalfYearAmountDto> homeFindHalfYearStationAmountData(@Param("params") HomeRequestDto params);
|
||||
//
|
||||
// Long homeFindOrderCountData(@Param("date") Date date);
|
||||
//
|
||||
// Double homeFindOrderAmountData(@Param("date") Date date);
|
||||
//
|
||||
// List<HomeOrderInfo> findOrderListByStatus(@Param("status") Integer status);
|
||||
//}
|
||||
|
||||
@ -2,18 +2,12 @@ package com.evotech.hd.common.core.entity;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.Hidden;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.media.Schema.RequiredMode;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
@ -23,25 +17,16 @@ import java.util.Date;
|
||||
*/
|
||||
@Data
|
||||
@Schema(name = "BaseEntity", description = "基础实体类")
|
||||
public class BaseEntity implements Serializable {
|
||||
public class BaseEntity extends IdEntity {
|
||||
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "pk_id", type = IdType.AUTO)
|
||||
@Hidden
|
||||
private Integer pkId;
|
||||
|
||||
@Schema(description = "创建人", hidden = true)
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private String creater;
|
||||
|
||||
@Schema(description = "创建时间", hidden = true)
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date ctime;
|
||||
|
||||
@Schema(description = "更新人", hidden = true)
|
||||
@TableField(fill = FieldFill.UPDATE)
|
||||
private String updater;
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
package com.evotech.hd.common.core.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.Hidden;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:IdEntity
|
||||
* @date: 2025年05月16日 11:08
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Data
|
||||
public class IdEntity implements Serializable {
|
||||
|
||||
|
||||
@TableId(value = "pk_id", type = IdType.AUTO)
|
||||
@Hidden
|
||||
private Integer pkId;
|
||||
|
||||
|
||||
@Schema(description = "创建时间", hidden = true)
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date ctime;
|
||||
}
|
||||
@ -1,27 +1,19 @@
|
||||
package com.evotech.hd.common.core.entity.cloud;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.evotech.hd.common.core.entity.BaseEntity;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.media.Schema.RequiredMode;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zrb
|
||||
* @since 2024-10-17
|
||||
@ -44,6 +36,9 @@ public class BatteryStationHdFeeStandard extends BaseEntity implements Serializa
|
||||
@Schema(description = "换电站编码")
|
||||
private String stationName;
|
||||
|
||||
@Schema(description = "基本服务费")
|
||||
private BigDecimal serviceFee;
|
||||
|
||||
@Schema(description = "开始日期", requiredMode = RequiredMode.REQUIRED, example = DatePattern.PURE_DATE_PATTERN)
|
||||
@NotBlank(message = "开始时间不能为空")
|
||||
private String dayBegin;
|
||||
@ -61,6 +56,9 @@ public class BatteryStationHdFeeStandard extends BaseEntity implements Serializa
|
||||
@Schema(description = "每度电收费")
|
||||
private BigDecimal eachKwhFee;
|
||||
|
||||
|
||||
|
||||
|
||||
@Schema(description = "正常换电服务费")
|
||||
private BigDecimal commonRemainFee;
|
||||
|
||||
|
||||
@ -1,26 +1,19 @@
|
||||
package com.evotech.hd.common.core.entity.cloud;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.evotech.hd.common.core.entity.BaseEntity;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalTime;
|
||||
import java.util.Date;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.media.Schema.RequiredMode;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalTime;
|
||||
|
||||
/**
|
||||
* @author zrb
|
||||
@ -42,6 +35,9 @@ public class BatteryStationHdFeeStandardDetail extends BaseEntity implements Ser
|
||||
@NotNull
|
||||
private Integer standardId;
|
||||
|
||||
@Schema(description = "服务费")
|
||||
private BigDecimal serviceFee;
|
||||
|
||||
@Schema(description = "每公里收费")
|
||||
private BigDecimal eachKmFee;
|
||||
|
||||
@ -61,6 +57,5 @@ public class BatteryStationHdFeeStandardDetail extends BaseEntity implements Ser
|
||||
@DateTimeFormat(pattern = DatePattern.NORM_TIME_PATTERN)
|
||||
private LocalTime timeEnd;
|
||||
|
||||
@Schema(description = "谷段服务费")
|
||||
private BigDecimal timeServiceFee;
|
||||
|
||||
}
|
||||
|
||||
@ -1,162 +1,162 @@
|
||||
package com.evotech.hd.common.core.entity.cloud;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.evotech.hd.common.core.entity.BaseEntity;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.media.Schema.RequiredMode;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author zrb
|
||||
* @since 2024-11-22
|
||||
*/
|
||||
@Data
|
||||
@TableName("hd_cloud_manage.yt_t_order_swap_battery")
|
||||
@Schema(name = "换电订单信息表")
|
||||
public class OrderSwapBattery extends BaseEntity implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "预约订单ID")
|
||||
private Integer orderPreId;
|
||||
|
||||
@Schema(description = "预约用户")
|
||||
private String orderPreUid;
|
||||
|
||||
@Schema(description = "预约用户名称")
|
||||
private String orderPreUname;
|
||||
|
||||
@Schema(description = "预约用户手机")
|
||||
private String orderPrePhone;
|
||||
|
||||
@Schema(description = "类型:1-换电,2-充电", requiredMode = RequiredMode.REQUIRED)
|
||||
@NotNull(message = "订单类型不能为空")
|
||||
private Integer orderType;
|
||||
|
||||
@Schema(description = "订单编码", hidden = true)
|
||||
private String orderNo;
|
||||
|
||||
@Schema(description = "车牌号", requiredMode = RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "车牌号不能为空")
|
||||
private String plateNum;
|
||||
|
||||
@Schema(description = "订单时间", example = "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 Date orderTime;
|
||||
|
||||
@Schema(description = "换电站编码", requiredMode = RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "换电站编码不能为空")
|
||||
private String stationCode;
|
||||
|
||||
@Schema(description = "换电站名称", requiredMode = RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "换电站名称不能为空")
|
||||
private String stationName;
|
||||
|
||||
@Schema(description = "金额账号")
|
||||
private String accountCode;
|
||||
|
||||
@Schema(description = "订单金额")
|
||||
private Integer amount;
|
||||
|
||||
@Schema(description = "订单状态:1-已创建,2-换电中,3-换电完成,4-充电中,5-充电完成,6-待结算,7-已完成,9-已取消, -1-退款")
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "计算费用方式:1-ODO,2-SOC,3-按电量")
|
||||
private Integer feeType;
|
||||
|
||||
@Schema(description = "基础费用")
|
||||
private BigDecimal basicFee;
|
||||
|
||||
@Schema(description = "服务开始时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
private Date serviceTimeBegin;
|
||||
|
||||
@Schema(description = "服务结束时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
private Date serviceTimeEnd;
|
||||
|
||||
@Schema(description = "服务费")
|
||||
private BigDecimal serviceFee;
|
||||
|
||||
@Schema(description = "费用标准")
|
||||
private String feeStandardJson;
|
||||
@Schema(description = "费用标准详情")
|
||||
@TableField(exist = false)
|
||||
private BatteryStationHdFeeStandard feeStandardDetail;
|
||||
|
||||
@Schema(description = "上次租赁电池时车辆里程")
|
||||
private BigDecimal lastRentBatCarOdo;
|
||||
|
||||
@Schema(description = "归还电池时车辆里程")
|
||||
private BigDecimal nowReturnBatCarOdo;
|
||||
|
||||
@Schema(description = "按ODO换电费")
|
||||
private BigDecimal odoAmount;
|
||||
|
||||
@Schema(description = "充电开始时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
private Date chargeTimeBegin;
|
||||
|
||||
@Schema(description = "充电结束时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
private Date chargeTimeEnd;
|
||||
|
||||
@Schema(description = "总充电量")
|
||||
private BigDecimal electAmount;
|
||||
|
||||
@Schema(description = "租借电池包仓位")
|
||||
private Integer rentBatNo;
|
||||
|
||||
@Schema(description = "租用电池包编码")
|
||||
private String rentBatCode;
|
||||
|
||||
@Schema(description = "租用电池包SOC")
|
||||
private Integer rentBatSoc;
|
||||
|
||||
@Schema(description = "归还电池包编码")
|
||||
private String returnBatCode;
|
||||
|
||||
@Schema(description = "归还电池包仓位")
|
||||
private Integer returnBatNo;
|
||||
|
||||
@Schema(description = "归还电池包SOC")
|
||||
private Integer returnBatSoc;
|
||||
|
||||
@Schema(description = "归还电池租出时soc")
|
||||
private Integer returnBatRentSoc;
|
||||
|
||||
@Schema(description = "归还电池租出的换电站编码")
|
||||
private String returnBatRentStationCode;
|
||||
|
||||
@Schema(description = "归还电池租出的换电站")
|
||||
private String returnBatRentStationName;
|
||||
|
||||
@Schema(description = "换电模式:1-全自动,2-半自动,3-人工干预 ")
|
||||
private Integer changeMode;
|
||||
|
||||
@Schema(description = "换电车道 1-A 车道;2-B 车道")
|
||||
private Integer changeLane;
|
||||
|
||||
@Schema(description = "删除状态:1-已删除,0-未删除", hidden = true)
|
||||
private Integer delFlag;
|
||||
|
||||
@Schema(description = "交易编码", hidden = true)
|
||||
private String tradeNo;
|
||||
|
||||
@Schema(description = "备注信息")
|
||||
private String remark;
|
||||
}
|
||||
//package com.evotech.hd.common.core.entity.cloud;
|
||||
//
|
||||
//import com.baomidou.mybatisplus.annotation.TableField;
|
||||
//import com.baomidou.mybatisplus.annotation.TableName;
|
||||
//import com.evotech.hd.common.core.entity.BaseEntity;
|
||||
//import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
//import io.swagger.v3.oas.annotations.media.Schema;
|
||||
//import io.swagger.v3.oas.annotations.media.Schema.RequiredMode;
|
||||
//import jakarta.validation.constraints.NotBlank;
|
||||
//import jakarta.validation.constraints.NotNull;
|
||||
//import lombok.Data;
|
||||
//import org.springframework.format.annotation.DateTimeFormat;
|
||||
//
|
||||
//import java.io.Serializable;
|
||||
//import java.math.BigDecimal;
|
||||
//import java.util.Date;
|
||||
//
|
||||
///**
|
||||
// * @author zrb
|
||||
// * @since 2024-11-22
|
||||
// */
|
||||
//@Data
|
||||
//@TableName("hd_cloud_manage.yt_t_order_swap_battery")
|
||||
//@Schema(name = "换电订单信息表")
|
||||
//public class OrderSwapBattery extends BaseEntity implements Serializable {
|
||||
//
|
||||
// private static final long serialVersionUID = 1L;
|
||||
//
|
||||
// @Schema(description = "预约订单ID")
|
||||
// private Integer orderPreId;
|
||||
//
|
||||
// @Schema(description = "预约用户")
|
||||
// private String orderPreUid;
|
||||
//
|
||||
// @Schema(description = "预约用户名称")
|
||||
// private String orderPreUname;
|
||||
//
|
||||
// @Schema(description = "预约用户手机")
|
||||
// private String orderPrePhone;
|
||||
//
|
||||
// @Schema(description = "类型:1-换电,2-充电", requiredMode = RequiredMode.REQUIRED)
|
||||
// @NotNull(message = "订单类型不能为空")
|
||||
// private Integer orderType;
|
||||
//
|
||||
// @Schema(description = "订单编码", hidden = true)
|
||||
// private String orderNo;
|
||||
//
|
||||
// @Schema(description = "车牌号", requiredMode = RequiredMode.REQUIRED)
|
||||
// @NotBlank(message = "车牌号不能为空")
|
||||
// private String plateNum;
|
||||
//
|
||||
// @Schema(description = "订单时间", example = "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 Date orderTime;
|
||||
//
|
||||
// @Schema(description = "换电站编码", requiredMode = RequiredMode.REQUIRED)
|
||||
// @NotBlank(message = "换电站编码不能为空")
|
||||
// private String stationCode;
|
||||
//
|
||||
// @Schema(description = "换电站名称", requiredMode = RequiredMode.REQUIRED)
|
||||
// @NotBlank(message = "换电站名称不能为空")
|
||||
// private String stationName;
|
||||
//
|
||||
// @Schema(description = "金额账号")
|
||||
// private String accountCode;
|
||||
//
|
||||
// @Schema(description = "订单金额")
|
||||
// private Integer amount;
|
||||
//
|
||||
// @Schema(description = "订单状态:1-已创建,2-换电中,3-换电完成,4-充电中,5-充电完成,6-待结算,7-已完成,9-已取消, -1-退款")
|
||||
// private Integer status;
|
||||
//
|
||||
// @Schema(description = "计算费用方式:1-ODO,2-SOC,3-按电量")
|
||||
// private Integer feeType;
|
||||
//
|
||||
// @Schema(description = "基础费用")
|
||||
// private BigDecimal basicFee;
|
||||
//
|
||||
// @Schema(description = "服务开始时间")
|
||||
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
// private Date serviceTimeBegin;
|
||||
//
|
||||
// @Schema(description = "服务结束时间")
|
||||
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
// private Date serviceTimeEnd;
|
||||
//
|
||||
// @Schema(description = "服务费")
|
||||
// private BigDecimal serviceFee;
|
||||
//
|
||||
// @Schema(description = "费用标准")
|
||||
// private String feeStandardJson;
|
||||
// @Schema(description = "费用标准详情")
|
||||
// @TableField(exist = false)
|
||||
// private BatteryStationHdFeeStandard feeStandardDetail;
|
||||
//
|
||||
// @Schema(description = "上次租赁电池时车辆里程")
|
||||
// private BigDecimal lastRentBatCarOdo;
|
||||
//
|
||||
// @Schema(description = "归还电池时车辆里程")
|
||||
// private BigDecimal nowReturnBatCarOdo;
|
||||
//
|
||||
// @Schema(description = "按ODO换电费")
|
||||
// private BigDecimal odoAmount;
|
||||
//
|
||||
// @Schema(description = "充电开始时间")
|
||||
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
// private Date chargeTimeBegin;
|
||||
//
|
||||
// @Schema(description = "充电结束时间")
|
||||
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
// private Date chargeTimeEnd;
|
||||
//
|
||||
// @Schema(description = "总充电量")
|
||||
// private BigDecimal electAmount;
|
||||
//
|
||||
// @Schema(description = "租借电池包仓位")
|
||||
// private Integer rentBatNo;
|
||||
//
|
||||
// @Schema(description = "租用电池包编码")
|
||||
// private String rentBatCode;
|
||||
//
|
||||
// @Schema(description = "租用电池包SOC")
|
||||
// private Integer rentBatSoc;
|
||||
//
|
||||
// @Schema(description = "归还电池包编码")
|
||||
// private String returnBatCode;
|
||||
//
|
||||
// @Schema(description = "归还电池包仓位")
|
||||
// private Integer returnBatNo;
|
||||
//
|
||||
// @Schema(description = "归还电池包SOC")
|
||||
// private Integer returnBatSoc;
|
||||
//
|
||||
// @Schema(description = "归还电池租出时soc")
|
||||
// private Integer returnBatRentSoc;
|
||||
//
|
||||
// @Schema(description = "归还电池租出的换电站编码")
|
||||
// private String returnBatRentStationCode;
|
||||
//
|
||||
// @Schema(description = "归还电池租出的换电站")
|
||||
// private String returnBatRentStationName;
|
||||
//
|
||||
// @Schema(description = "换电模式:1-全自动,2-半自动,3-人工干预 ")
|
||||
// private Integer changeMode;
|
||||
//
|
||||
// @Schema(description = "换电车道 1-A 车道;2-B 车道")
|
||||
// private Integer changeLane;
|
||||
//
|
||||
// @Schema(description = "删除状态:1-已删除,0-未删除", hidden = true)
|
||||
// private Integer delFlag;
|
||||
//
|
||||
// @Schema(description = "交易编码", hidden = true)
|
||||
// private String tradeNo;
|
||||
//
|
||||
// @Schema(description = "备注信息")
|
||||
// private String remark;
|
||||
//}
|
||||
|
||||
@ -0,0 +1,16 @@
|
||||
package com.evotech.hd.common.core.enums;
|
||||
|
||||
/**
|
||||
* 枚举
|
||||
*
|
||||
* @ClassName:BaseEnum
|
||||
* @date: 2025年05月19日 15:36
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
public interface BaseEnum<K, V> {
|
||||
|
||||
K getKey();
|
||||
V getValue();
|
||||
}
|
||||
@ -1,10 +1,10 @@
|
||||
package com.evotech.hd.common.core.enums;
|
||||
|
||||
public enum OrderStatusEnums {
|
||||
public enum OrderStatusEnums implements BaseEnum<Integer, String> {
|
||||
|
||||
CREATE(1, "已创建"),
|
||||
|
||||
SWAP(2, "换电开始"),
|
||||
SWAP(2, "换电中"),
|
||||
|
||||
SWAPOVER(3, "换电完成"),
|
||||
|
||||
@ -16,7 +16,12 @@ public enum OrderStatusEnums {
|
||||
|
||||
FINISH(7, "已完成"),
|
||||
|
||||
CANCLE(9, "已取消");
|
||||
CANCLE(9, "已取消"),
|
||||
|
||||
REFUND(-1, "订单退款"),
|
||||
|
||||
;
|
||||
|
||||
|
||||
|
||||
Integer code;
|
||||
@ -36,4 +41,14 @@ public enum OrderStatusEnums {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Integer getKey() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return this.name;
|
||||
}
|
||||
}
|
||||
|
||||
@ -45,7 +45,6 @@ public class Collections implements Serializable{
|
||||
/**
|
||||
* @DES 检查集合为空
|
||||
* @author andy.shi
|
||||
* @company 龙腾工作室
|
||||
* @createDate 2020年12月25日下午2:14:43
|
||||
* @methodName Collections.isEmpty
|
||||
* @param list
|
||||
@ -59,7 +58,6 @@ public class Collections implements Serializable{
|
||||
/**
|
||||
* @DES 检查集合不为空
|
||||
* @author andy.shi
|
||||
* @company 龙腾工作室
|
||||
* @createDate 2020年12月25日下午2:15:07
|
||||
* @methodName Collections.isNotEmpty
|
||||
* @param collection
|
||||
@ -73,7 +71,6 @@ public class Collections implements Serializable{
|
||||
/**
|
||||
* 将list进行分页
|
||||
* @author Andy.shi
|
||||
* @company 龙腾工作室
|
||||
* @date 2020年9月15日上午9:37:07
|
||||
* @param <T> 泛型, 根据传入的对对象类型,返回类型
|
||||
* @param list 需要分组的集合
|
||||
@ -109,7 +106,6 @@ public class Collections implements Serializable{
|
||||
/**
|
||||
* 创建对象
|
||||
* @author Andy.shi
|
||||
* @company 龙腾工作室
|
||||
* @date 2020年9月15日上午9:37:07
|
||||
* @param <T>
|
||||
* @return
|
||||
@ -121,7 +117,6 @@ public class Collections implements Serializable{
|
||||
/**
|
||||
* @DES 数组转对象
|
||||
* @author andy.shi
|
||||
* @company 龙腾工作室
|
||||
* @createDate 2020年12月25日下午2:09:14
|
||||
* @methodName Collections.asList
|
||||
* @param objs
|
||||
@ -157,7 +152,6 @@ public class Collections implements Serializable{
|
||||
/**
|
||||
* 去除集合的重复项
|
||||
* @author Andy.shi
|
||||
* @company 龙腾工作室
|
||||
* @date 2020年9月24日上午9:09:07
|
||||
* @param <T> 泛型,字段的类型, 如果是对象, 请重写hashCode() 和 equals()
|
||||
* @param list1 去重的集合1
|
||||
@ -172,7 +166,6 @@ public class Collections implements Serializable{
|
||||
/**
|
||||
* 去除集合的重复项
|
||||
* @author Andy.shi
|
||||
* @company 龙腾工作室
|
||||
* @date 2020年9月24日上午9:13:09
|
||||
* @param <T> 泛型,字段的类型, 如果是对象, 请重写hashCode() 和 equals()
|
||||
* @param listArray 去重的集合数组
|
||||
@ -203,7 +196,6 @@ public class Collections implements Serializable{
|
||||
/**
|
||||
* 获取重复数据
|
||||
* @author Andy.shi
|
||||
* @company 龙腾工作室
|
||||
* @date 2020年9月24日上午9:46:03
|
||||
* @param <T> 泛型,字段的类型, 如果是对象, 请重写hashCode() 和 equals()
|
||||
* @param list1 查重的集合1
|
||||
@ -217,7 +209,6 @@ public class Collections implements Serializable{
|
||||
/**
|
||||
* 获取重复数据
|
||||
* @author Andy.shi
|
||||
* @company 龙腾工作室
|
||||
* @date 2020年9月24日上午9:44:30
|
||||
* @param <T> 泛型,字段的类型, 如果是对象, 请重写hashCode() 和 equals()
|
||||
* @param listArray 需要查重的集合数组
|
||||
@ -281,7 +272,6 @@ public class Collections implements Serializable{
|
||||
/**
|
||||
* @DES 组装map数据对象
|
||||
* @author andy.shi
|
||||
* @company 龙腾工作室
|
||||
* @createDate 2020年12月25日下午1:37:05
|
||||
* @methodName MapLists.createMap
|
||||
* @param args
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
package com.evotech.hd.common.core.utils;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
public class CommonUtil {
|
||||
|
||||
@ -47,6 +49,12 @@ public class CommonUtil {
|
||||
return prefix + "1100";
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static BigDecimal yuanToFen(BigDecimal yuan){
|
||||
if(ObjectUtils.isEmpty(yuan)){
|
||||
return new BigDecimal(0);
|
||||
}
|
||||
return yuan.multiply(new BigDecimal(100));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,40 @@
|
||||
package com.evotech.hd.common.web.util;
|
||||
|
||||
import com.evotech.hd.common.core.enums.BaseEnum;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* 类
|
||||
* @ClassName:EnumUtils
|
||||
* @date: 2025年05月19日 15:30
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
|
||||
public class EnumUtils extends org.apache.commons.lang3.EnumUtils{
|
||||
|
||||
|
||||
public static <E extends BaseEnum<K,V>, K, V> E getEnumProperty(final Class<E> enumClass, final K k) {
|
||||
List<E> el = new ArrayList<>(Arrays.asList(enumClass.getEnumConstants()));
|
||||
for (E e: el){
|
||||
if(e.getKey().equals(k)){
|
||||
return e;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public static <E extends BaseEnum<K,V>, K,V> V getEnumPropertyValue(final Class<E> enumClass, final K k) {
|
||||
List<E> el = new ArrayList<>(Arrays.asList(enumClass.getEnumConstants()));
|
||||
for (E e: el){
|
||||
if(e.getKey().equals(k)){
|
||||
return e.getValue();
|
||||
}
|
||||
}
|
||||
return (V)"未知属性";
|
||||
}
|
||||
}
|
||||
@ -148,10 +148,10 @@ public class HomeController {
|
||||
// return homeService.homeData7(type);
|
||||
// }
|
||||
|
||||
|
||||
@Operation(hidden = true)
|
||||
@GetMapping("/login/data")
|
||||
public void loginData() {
|
||||
homeService.loginData();
|
||||
}
|
||||
//
|
||||
// @Operation(hidden = true)
|
||||
// @GetMapping("/login/data")
|
||||
// public void loginData() {
|
||||
// homeService.loginData();
|
||||
// }
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ package com.evotech.hd.cloud.controller.dh;
|
||||
|
||||
import com.evotech.hd.cloud.service.DHDeviceService;
|
||||
import com.evotech.hd.common.core.Dto.Result;
|
||||
import com.evotech.hd.common.core.Dto.DeviceDto;
|
||||
import com.evotech.hd.common.core.Dto.device.DeviceDto;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
|
||||
@ -0,0 +1,57 @@
|
||||
package com.evotech.hd.cloud.controller.order;
|
||||
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre;
|
||||
import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.springdoc.core.annotations.ParameterObject;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 预约订单管理类
|
||||
* @ClassName:OrderPerController
|
||||
* @date: 2025年05月16日 13:51
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Tag(name = "预约订单")
|
||||
@ApiSupport(order = 22)
|
||||
@RestController
|
||||
@RequestMapping("/order/per")
|
||||
public class OrderPerController {
|
||||
|
||||
|
||||
@Operation(summary = "增加预约")
|
||||
@PostMapping("/add")
|
||||
@ApiOperationSupport(order = 1)
|
||||
public Result<Integer> addPre(@Valid @ParameterObject OrderSwapBatteryPre osbp) {
|
||||
return orderSwapBatteryService.addPre(osbp);
|
||||
}
|
||||
|
||||
@Operation(summary = "取消预约")
|
||||
@PostMapping("/cancel")
|
||||
@ApiOperationSupport(order = 2)
|
||||
public Result<Integer> cancelPre(@NotNull Integer id) {
|
||||
return orderSwapBatteryService.cancelPre(id, null);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询预约")
|
||||
@GetMapping("/list")
|
||||
@ApiOperationSupport(order = 3)
|
||||
public Result<List<OrderSwapBatteryPre>> listPre(@ParameterObject PageListSwapOrderPreRequest plsopr) throws ParseException {
|
||||
return orderSwapBatteryService.listPre(plsopr);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,28 +1,19 @@
|
||||
package com.evotech.hd.cloud.controller.order;
|
||||
|
||||
import com.evotech.hd.cloud.entity.vo.NativePayVO;
|
||||
import com.evotech.hd.cloud.service.OrderSwapBatteryService;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep;
|
||||
import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse;
|
||||
import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.evotech.hd.cloud.service.OrderService;
|
||||
import com.evotech.hd.common.core.Dto.Result;
|
||||
import com.evotech.hd.common.core.Dto.order.OrderListVo;
|
||||
import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.swagger.v3.oas.annotations.Hidden;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.springdoc.core.annotations.ParameterObject;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.List;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@Tag(name = "换电订单")
|
||||
@ApiSupport(order = 22)
|
||||
@ -31,139 +22,95 @@ import java.util.List;
|
||||
public class OrderSwapBatteryController {
|
||||
|
||||
@Resource
|
||||
private OrderSwapBatteryService orderSwapBatteryService;
|
||||
|
||||
|
||||
@Operation(summary = "增加预约")
|
||||
@PostMapping("/pre/add")
|
||||
@ApiOperationSupport(order = 1)
|
||||
public Result<Integer> addPre(@Valid @ParameterObject OrderSwapBatteryPre osbp) {
|
||||
return orderSwapBatteryService.addPre(osbp);
|
||||
}
|
||||
|
||||
@Operation(summary = "取消预约")
|
||||
@PostMapping("/pre/cancel")
|
||||
@ApiOperationSupport(order = 2)
|
||||
public Result<Integer> cancelPre(@NotNull Integer id) {
|
||||
return orderSwapBatteryService.cancelPre(id, null);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询预约")
|
||||
@GetMapping("/pre/list")
|
||||
@ApiOperationSupport(order = 3)
|
||||
public Result<List<OrderSwapBatteryPre>> listPre(@ParameterObject PageListSwapOrderPreRequest plsopr) throws ParseException {
|
||||
return orderSwapBatteryService.listPre(plsopr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Operation(summary = "增加")
|
||||
@PostMapping("/add")
|
||||
@ApiOperationSupport(order = 4)
|
||||
public Result<Integer> add(@Valid @ParameterObject OrderSwapBattery osb) {
|
||||
return orderSwapBatteryService.add(osb);
|
||||
}
|
||||
|
||||
@Operation(summary = "删除")
|
||||
@PostMapping("/del")
|
||||
@ApiOperationSupport(order = 5)
|
||||
public Result<Integer> delete(Integer id) {
|
||||
return orderSwapBatteryService.delete(id);
|
||||
}
|
||||
|
||||
@Operation(summary = "修改")
|
||||
@PostMapping({"/update"})
|
||||
@ApiOperationSupport(order = 6)
|
||||
public Result<Integer> update(@ParameterObject OrderSwapBattery osb) {
|
||||
return orderSwapBatteryService.update(osb);
|
||||
}
|
||||
|
||||
private OrderService orderService;
|
||||
|
||||
|
||||
@Operation(summary = "查询")
|
||||
@GetMapping("/list")
|
||||
@ApiOperationSupport(order = 7)
|
||||
public Result<List<OrderSwapBattery>> list(@ParameterObject PageListSwapOrderRequest plsor) {
|
||||
return orderSwapBatteryService.list(plsor);
|
||||
public Result<Page<OrderListVo>> list(@ParameterObject PageListSwapOrderRequest plsor) {
|
||||
return orderService.pageList(plsor);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询公司订单")
|
||||
@GetMapping("/listcompanyorder")
|
||||
@ApiOperationSupport(order = 8)
|
||||
@Hidden
|
||||
@Deprecated
|
||||
public Result<List<OrderSwapBattery>> listByCompany(@ParameterObject PageListSwapOrderRequest plsor) {
|
||||
return orderSwapBatteryService.listByCompany(plsor);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询换电步骤")
|
||||
@GetMapping("/step/list")
|
||||
@ApiOperationSupport(order = 9)
|
||||
public Result<List<OrderSwapBatteryStep>> listStep(@NotBlank String orderNo) {
|
||||
return orderSwapBatteryService.listStep(orderNo);
|
||||
}
|
||||
|
||||
@Operation(summary = "费用计算")
|
||||
@PostMapping({"/cost"})
|
||||
@ApiOperationSupport(order = 9)
|
||||
public Result<String> calculateCost(@NotBlank @RequestParam OrderSwapBattery osb) {
|
||||
return orderSwapBatteryService.calculateCost(osb);
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "个人账户余额支付")
|
||||
@PostMapping({"/wallet/pay"})
|
||||
@ApiOperationSupport(order = 11)
|
||||
public Result<String> walletPay(@RequestParam String orderNo, String wuid, String uname) {
|
||||
return orderSwapBatteryService.walletPay(orderNo, wuid, uname);
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "公司订单余额支付")
|
||||
@PostMapping({"/companywallet/pay"})
|
||||
@ApiOperationSupport(order = 12)
|
||||
public Result<String> companyWalletPay(@RequestParam String orderNo, String wuid, String uname) {
|
||||
// TODO
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "公司订单扫码支付")
|
||||
@PostMapping({"/wechat/nativepay"})
|
||||
@ApiOperationSupport(order = 13)
|
||||
public Result<String> companyNativePay(@RequestBody NativePayVO prePay) {
|
||||
return orderSwapBatteryService.companyNativePay(prePay);
|
||||
}
|
||||
|
||||
@Operation(summary = "扫码支付订单查询状态")
|
||||
@GetMapping("/paystatus/query")
|
||||
@ApiOperationSupport(order = 14)
|
||||
public Result<String> orderQuery(String outTradeNo) {
|
||||
return orderSwapBatteryService.orderQuery(outTradeNo);
|
||||
}
|
||||
|
||||
@Operation(summary = "站端取消订单")
|
||||
@PostMapping("/pre/cancelOrder")
|
||||
@ApiOperationSupport(order = 15)
|
||||
public Result<Integer> cancelOrder(@NotNull String orderNo) {
|
||||
return orderSwapBatteryService.cancelOrder(orderNo, null);
|
||||
}
|
||||
@Operation(summary = "开始换电")
|
||||
@PostMapping("/startSwap")
|
||||
@ApiOperationSupport(order = 16)
|
||||
public Result<Boolean> startSwap(@RequestParam String wuid,String orderId) {
|
||||
return orderSwapBatteryService.startSwap(wuid,orderId);
|
||||
}
|
||||
@Operation(summary = "获取开始换电回复")
|
||||
@PostMapping("/getStartSwap")
|
||||
@ApiOperationSupport(order = 17)
|
||||
public Result<BatterySwapResponse> getStartSwap(@RequestParam String wuid, String orderId) {
|
||||
return orderSwapBatteryService.getStartSwap(wuid,orderId);
|
||||
}
|
||||
|
||||
@Operation(summary = "未完成订单查询:plateNum")
|
||||
@GetMapping("/checkList")
|
||||
@ApiOperationSupport(order = 18)
|
||||
public Result<Integer> checkList(@ParameterObject PageListSwapOrderRequest plsor) {
|
||||
return orderSwapBatteryService.checkList(plsor);
|
||||
}
|
||||
// @Operation(summary = "查询公司订单")
|
||||
// @GetMapping("/listcompanyorder")
|
||||
// @ApiOperationSupport(order = 8)
|
||||
// @Hidden
|
||||
// @Deprecated
|
||||
// public Result<List<OrderSwapBattery>> listByCompany(@ParameterObject PageListSwapOrderRequest plsor) {
|
||||
// return orderSwapBatteryService.listByCompany(plsor);
|
||||
// }
|
||||
//
|
||||
// @Operation(summary = "查询换电步骤")
|
||||
// @GetMapping("/step/list")
|
||||
// @ApiOperationSupport(order = 9)
|
||||
// public Result<List<OrderSwapBatteryStep>> listStep(@NotBlank String orderNo) {
|
||||
// return orderSwapBatteryService.listStep(orderNo);
|
||||
// }
|
||||
//
|
||||
// @Operation(summary = "费用计算")
|
||||
// @PostMapping({"/cost"})
|
||||
// @ApiOperationSupport(order = 9)
|
||||
// public Result<String> calculateCost(@NotBlank @RequestParam OrderSwapBattery osb) {
|
||||
// return orderSwapBatteryService.calculateCost(osb);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Operation(summary = "个人账户余额支付")
|
||||
// @PostMapping({"/wallet/pay"})
|
||||
// @ApiOperationSupport(order = 11)
|
||||
// public Result<String> walletPay(@RequestParam String orderNo, String wuid, String uname) {
|
||||
// return orderSwapBatteryService.walletPay(orderNo, wuid, uname);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Operation(summary = "公司订单余额支付")
|
||||
// @PostMapping({"/companywallet/pay"})
|
||||
// @ApiOperationSupport(order = 12)
|
||||
// public Result<String> companyWalletPay(@RequestParam String orderNo, String wuid, String uname) {
|
||||
// // TODO
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Operation(summary = "公司订单扫码支付")
|
||||
// @PostMapping({"/wechat/nativepay"})
|
||||
// @ApiOperationSupport(order = 13)
|
||||
// public Result<String> companyNativePay(@RequestBody NativePayVO prePay) {
|
||||
// return orderSwapBatteryService.companyNativePay(prePay);
|
||||
// }
|
||||
//
|
||||
// @Operation(summary = "扫码支付订单查询状态")
|
||||
// @GetMapping("/paystatus/query")
|
||||
// @ApiOperationSupport(order = 14)
|
||||
// public Result<String> orderQuery(String outTradeNo) {
|
||||
// return orderSwapBatteryService.orderQuery(outTradeNo);
|
||||
// }
|
||||
//
|
||||
// @Operation(summary = "站端取消订单")
|
||||
// @PostMapping("/pre/cancelOrder")
|
||||
// @ApiOperationSupport(order = 15)
|
||||
// public Result<Integer> cancelOrder(@NotNull String orderNo) {
|
||||
// return orderSwapBatteryService.cancelOrder(orderNo, null);
|
||||
// }
|
||||
// @Operation(summary = "开始换电")
|
||||
// @PostMapping("/startSwap")
|
||||
// @ApiOperationSupport(order = 16)
|
||||
// public Result<Boolean> startSwap(@RequestParam String wuid,String orderId) {
|
||||
// return orderSwapBatteryService.startSwap(wuid,orderId);
|
||||
// }
|
||||
// @Operation(summary = "获取开始换电回复")
|
||||
// @PostMapping("/getStartSwap")
|
||||
// @ApiOperationSupport(order = 17)
|
||||
// public Result<BatterySwapResponse> getStartSwap(@RequestParam String wuid, String orderId) {
|
||||
// return orderSwapBatteryService.getStartSwap(wuid,orderId);
|
||||
// }
|
||||
//
|
||||
// @Operation(summary = "未完成订单查询:plateNum")
|
||||
// @GetMapping("/checkList")
|
||||
// @ApiOperationSupport(order = 18)
|
||||
// public Result<Integer> checkList(@ParameterObject PageListSwapOrderRequest plsor) {
|
||||
// return orderSwapBatteryService.checkList(plsor);
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@ -1,172 +1,172 @@
|
||||
package com.evotech.hd.cloud.controller.test;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.evotech.hd.cloud.dao.BatteryStationDao;
|
||||
import com.evotech.hd.cloud.dao.OrderSwapBatteryPreDao;
|
||||
import com.evotech.hd.cloud.dao.VehicleWechatUserRelationDao;
|
||||
import com.evotech.hd.cloud.device.dh.DHRequestUtil;
|
||||
import com.evotech.hd.cloud.mqtt.message.MessageTopic;
|
||||
import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader;
|
||||
import com.evotech.hd.cloud.mqtt.message.processor.strategy.MqttStrategyExchangeProcessor;
|
||||
import com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.state.MqttStateChargingDataExchangeProcessor;
|
||||
import com.evotech.hd.cloud.utils.components.SwapOrderBasicFeeComponent;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
import com.evotech.hd.common.core.entity.cloud.BatteryStation;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre;
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @desc:
|
||||
* @ClassName:TestController
|
||||
* @date: 2025年04月18日 14:40
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/test")
|
||||
public class TestController {
|
||||
|
||||
@Resource
|
||||
private BatteryStationDao batteryStationDao;
|
||||
private VehicleWechatUserRelationDao vehicleWechatUserRelationDao;
|
||||
@Resource
|
||||
private OrderSwapBatteryPreDao orderSwapBatteryPreDao;
|
||||
@Resource
|
||||
private SwapOrderBasicFeeComponent orderBasicFeeComponent;
|
||||
@Resource
|
||||
MqttStateChargingDataExchangeProcessor mqttStateChargingDataRequestExchangeProcessor;
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
//package com.evotech.hd.cloud.controller.test;
|
||||
//
|
||||
//import cn.hutool.core.date.DatePattern;
|
||||
//import cn.hutool.core.date.DateUtil;
|
||||
//import cn.hutool.core.util.RandomUtil;
|
||||
//import cn.hutool.json.JSONUtil;
|
||||
//import com.alibaba.fastjson.JSONObject;
|
||||
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
//import com.evotech.hd.cloud.dao.BatteryStationDao;
|
||||
//import com.evotech.hd.cloud.dao.OrderSwapBatteryPreDao;
|
||||
//import com.evotech.hd.cloud.dao.VehicleWechatUserRelationDao;
|
||||
//import com.evotech.hd.cloud.device.dh.DHRequestUtil;
|
||||
//import com.evotech.hd.cloud.mqtt.message.MessageTopic;
|
||||
//import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader;
|
||||
//import com.evotech.hd.cloud.mqtt.message.processor.strategy.MqttStrategyExchangeProcessor;
|
||||
//import com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.state.MqttStateChargingDataExchangeProcessor;
|
||||
//import com.evotech.hd.cloud.utils.components.SwapOrderBasicFeeComponent;
|
||||
//import com.evotech.hd.common.core.entity.Result;
|
||||
//import com.evotech.hd.common.core.entity.cloud.BatteryStation;
|
||||
//import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
|
||||
//import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre;
|
||||
//import com.evotech.hd.common.core.utils.Collections;
|
||||
//import jakarta.annotation.Resource;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.context.ApplicationContext;
|
||||
//import org.springframework.web.bind.annotation.*;
|
||||
//
|
||||
//import java.util.Date;
|
||||
//import java.util.List;
|
||||
//import java.util.Map;
|
||||
//
|
||||
///**
|
||||
// * @desc:
|
||||
// * @ClassName:TestController
|
||||
// * @date: 2025年04月18日 14:40
|
||||
// * @author: andy.shi
|
||||
// * @contact: 17330188597
|
||||
// * @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
// */
|
||||
//@RestController
|
||||
//@RequestMapping("/test")
|
||||
//public class TestController {
|
||||
//
|
||||
// @Resource
|
||||
// VehicleService vehicleService;
|
||||
// private BatteryStationDao batteryStationDao;
|
||||
// private VehicleWechatUserRelationDao vehicleWechatUserRelationDao;
|
||||
// @Resource
|
||||
// MongoDBService mongoDBService;
|
||||
|
||||
@PostMapping("/mongodb/save")
|
||||
public Result mongodbSave() {
|
||||
mqttStateChargingDataRequestExchangeProcessor.exchange(null,null,JSONUtil.parseObj("{batCode:123,orderNo:123321}"));
|
||||
return new Result().success("搞定");
|
||||
}
|
||||
|
||||
@PostMapping("/mongodb/list")
|
||||
public Result mongoList() {
|
||||
// mongoDBService.find("123", ChargingData.class, Collections.asMap(MongoConstant.REGEX+MongoConstant.SEPARATION+"value","\"batCode\":124"))
|
||||
return new Result().success("");
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/mqtt/test")
|
||||
public Result mqttTest(@RequestBody JSONObject json) {
|
||||
MessageTopic topic = new MessageTopic();
|
||||
topic.setDataDirection(json.getString("dataDirection"));
|
||||
topic.setMessageType(json.getString("messageType"));
|
||||
topic.setStationCode(json.getString("stationCode"));
|
||||
MqttMessageHeader header = new MqttMessageHeader();
|
||||
header.setFunction(json.getString("function"));
|
||||
cn.hutool.json.JSONObject dataBody = JSONUtil.parseObj(json.getJSONObject("dataBoy"));
|
||||
|
||||
Map<String, MqttStrategyExchangeProcessor> mqttMessageRequestExchangeProcessorMap = applicationContext.getBeansOfType(MqttStrategyExchangeProcessor.class);
|
||||
for (MqttStrategyExchangeProcessor processor : mqttMessageRequestExchangeProcessorMap.values()) {
|
||||
if(processor.accept(header.getFunction())){
|
||||
processor.exchange(topic, header, dataBody);
|
||||
}
|
||||
}
|
||||
return new Result().success("搞定");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@GetMapping("/station")
|
||||
public Result list() {
|
||||
System.out.println("======>>开始......");
|
||||
BatteryStation station = batteryStationDao.selectOne(new LambdaQueryWrapper<BatteryStation>().eq(BatteryStation::getCode,"FD12795455"));
|
||||
// 查这天,这个站的预约
|
||||
List<OrderSwapBatteryPre> orderPreList = orderSwapBatteryPreDao.selectList(new QueryWrapper<OrderSwapBatteryPre>().eq("station_code", station.getCode()).eq("status", 1).eq("ucode","e2fb21b6447e10006f19a23e06b67914"));
|
||||
// 根据预约生成订单
|
||||
if (orderPreList.isEmpty()) {
|
||||
System.out.println("没有预约单");
|
||||
}
|
||||
OrderSwapBatteryPre orderPre = orderPreList.get(0);
|
||||
OrderSwapBattery order = new OrderSwapBattery();
|
||||
order.setOrderType(1);
|
||||
order.setCtime(new Date());
|
||||
order.setCreater("TEST");
|
||||
order.setOrderPreId(orderPre.getPkId());
|
||||
order.setOrderPreUid(orderPre.getUcode());
|
||||
order.setOrderPreUname(orderPre.getUname());
|
||||
order.setOrderPrePhone(orderPre.getPhone());
|
||||
order.setOrderTime(new Date());
|
||||
order.setOrderNo(orderNo(station.getCode(), order.getOrderTime()));
|
||||
order.setPlateNum(orderPre.getPlateNum());
|
||||
|
||||
order.setStationCode(orderPre.getStationCode());
|
||||
order.setStationName(orderPre.getStationName());
|
||||
order.setStatus(1);
|
||||
order.setFeeType(3);
|
||||
order.setDelFlag(0);
|
||||
order.setRemark("测试用的");
|
||||
order.setChangeMode(1);
|
||||
order.setChangeLane(1);
|
||||
// 加上费用标准
|
||||
order = orderBasicFeeComponent.orderBasicFee(order);
|
||||
|
||||
System.out.println(JSONUtil.toJsonStr(order));
|
||||
return new Result().success(order);
|
||||
}
|
||||
|
||||
|
||||
private String orderNo(String stationCode, Date d) {
|
||||
String orderNoPrefix = "YTSO";
|
||||
String orderNoMiddle1 = stationCode.length() <= 8?stationCode : stationCode.substring(stationCode.length() - 8);
|
||||
String orderNoMiddle2 = DateUtil.format(d, DatePattern.PURE_DATETIME_MS_FORMATTER);
|
||||
String orderNoSuffix = RandomUtil.randomNumbers(2) + RandomUtil.randomChar("ABCDEF");
|
||||
return orderNoPrefix + orderNoMiddle1 + orderNoMiddle2 + orderNoSuffix;
|
||||
}
|
||||
|
||||
@PostMapping("/device/live")
|
||||
public Result deviceLive(@RequestParam String deviceId, @RequestParam String channelId) {
|
||||
return new Result().success(DHRequestUtil.live(deviceId, channelId));
|
||||
}
|
||||
|
||||
@PostMapping("/device/liveInfo")
|
||||
public Result deviceLiveInfo(@RequestParam String deviceId, @RequestParam String channelId) {
|
||||
return new Result().success(DHRequestUtil.liveInfo(deviceId, channelId));
|
||||
}
|
||||
|
||||
@PostMapping("/device/delLive")
|
||||
public Result delLive(@RequestParam String liveToken) {
|
||||
return new Result().success(DHRequestUtil.delLive(liveToken));
|
||||
}
|
||||
|
||||
@PostMapping("/device/list")
|
||||
public Result deviceList(@RequestParam Integer page, @RequestParam Integer pageSize) {
|
||||
return new Result().success(DHRequestUtil.deviceList(Collections.asMap("pageNum", page, "pageSize", pageSize)));
|
||||
}
|
||||
|
||||
@PostMapping("/device/createDeviceStreamUrl")
|
||||
public Result createDeviceStreamUrl(@RequestParam String deviceId, @RequestParam String channelId) {
|
||||
return new Result().success(DHRequestUtil.createDeviceStreamUrl(deviceId, channelId));
|
||||
}
|
||||
|
||||
@PostMapping("/store/list")
|
||||
public Result storeList(@RequestParam Integer page, @RequestParam Integer pageSize) {
|
||||
return new Result().success(DHRequestUtil.storeList(page, pageSize));
|
||||
}
|
||||
|
||||
}
|
||||
// private OrderSwapBatteryPreDao orderSwapBatteryPreDao;
|
||||
// @Resource
|
||||
// private SwapOrderBasicFeeComponent orderBasicFeeComponent;
|
||||
// @Resource
|
||||
// MqttStateChargingDataExchangeProcessor mqttStateChargingDataRequestExchangeProcessor;
|
||||
// @Autowired
|
||||
// private ApplicationContext applicationContext;
|
||||
//// @Resource
|
||||
//// VehicleService vehicleService;
|
||||
//// @Resource
|
||||
//// MongoDBService mongoDBService;
|
||||
//
|
||||
// @PostMapping("/mongodb/save")
|
||||
// public Result mongodbSave() {
|
||||
// mqttStateChargingDataRequestExchangeProcessor.exchange(null,null,JSONUtil.parseObj("{batCode:123,orderNo:123321}"));
|
||||
// return new Result().success("搞定");
|
||||
// }
|
||||
//
|
||||
// @PostMapping("/mongodb/list")
|
||||
// public Result mongoList() {
|
||||
//// mongoDBService.find("123", ChargingData.class, Collections.asMap(MongoConstant.REGEX+MongoConstant.SEPARATION+"value","\"batCode\":124"))
|
||||
// return new Result().success("");
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @PostMapping("/mqtt/test")
|
||||
// public Result mqttTest(@RequestBody JSONObject json) {
|
||||
// MessageTopic topic = new MessageTopic();
|
||||
// topic.setDataDirection(json.getString("dataDirection"));
|
||||
// topic.setMessageType(json.getString("messageType"));
|
||||
// topic.setStationCode(json.getString("stationCode"));
|
||||
// MqttMessageHeader header = new MqttMessageHeader();
|
||||
// header.setFunction(json.getString("function"));
|
||||
// cn.hutool.json.JSONObject dataBody = JSONUtil.parseObj(json.getJSONObject("dataBoy"));
|
||||
//
|
||||
// Map<String, MqttStrategyExchangeProcessor> mqttMessageRequestExchangeProcessorMap = applicationContext.getBeansOfType(MqttStrategyExchangeProcessor.class);
|
||||
// for (MqttStrategyExchangeProcessor processor : mqttMessageRequestExchangeProcessorMap.values()) {
|
||||
// if(processor.accept(header.getFunction())){
|
||||
// processor.exchange(topic, header, dataBody);
|
||||
// }
|
||||
// }
|
||||
// return new Result().success("搞定");
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// @GetMapping("/station")
|
||||
// public Result list() {
|
||||
// System.out.println("======>>开始......");
|
||||
// BatteryStation station = batteryStationDao.selectOne(new LambdaQueryWrapper<BatteryStation>().eq(BatteryStation::getCode,"FD12795455"));
|
||||
// // 查这天,这个站的预约
|
||||
// List<OrderSwapBatteryPre> orderPreList = orderSwapBatteryPreDao.selectList(new QueryWrapper<OrderSwapBatteryPre>().eq("station_code", station.getCode()).eq("status", 1).eq("ucode","e2fb21b6447e10006f19a23e06b67914"));
|
||||
// // 根据预约生成订单
|
||||
// if (orderPreList.isEmpty()) {
|
||||
// System.out.println("没有预约单");
|
||||
// }
|
||||
// OrderSwapBatteryPre orderPre = orderPreList.get(0);
|
||||
// OrderSwapBattery order = new OrderSwapBattery();
|
||||
// order.setOrderType(1);
|
||||
// order.setCtime(new Date());
|
||||
// order.setCreater("TEST");
|
||||
// order.setOrderPreId(orderPre.getPkId());
|
||||
// order.setOrderPreUid(orderPre.getUcode());
|
||||
// order.setOrderPreUname(orderPre.getUname());
|
||||
// order.setOrderPrePhone(orderPre.getPhone());
|
||||
// order.setOrderTime(new Date());
|
||||
// order.setOrderNo(orderNo(station.getCode(), order.getOrderTime()));
|
||||
// order.setPlateNum(orderPre.getPlateNum());
|
||||
//
|
||||
// order.setStationCode(orderPre.getStationCode());
|
||||
// order.setStationName(orderPre.getStationName());
|
||||
// order.setStatus(1);
|
||||
// order.setFeeType(3);
|
||||
// order.setDelFlag(0);
|
||||
// order.setRemark("测试用的");
|
||||
// order.setChangeMode(1);
|
||||
// order.setChangeLane(1);
|
||||
// // 加上费用标准
|
||||
// order = orderBasicFeeComponent.orderBasicFee(order);
|
||||
//
|
||||
// System.out.println(JSONUtil.toJsonStr(order));
|
||||
// return new Result().success(order);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// private String orderNo(String stationCode, Date d) {
|
||||
// String orderNoPrefix = "YTSO";
|
||||
// String orderNoMiddle1 = stationCode.length() <= 8?stationCode : stationCode.substring(stationCode.length() - 8);
|
||||
// String orderNoMiddle2 = DateUtil.format(d, DatePattern.PURE_DATETIME_MS_FORMATTER);
|
||||
// String orderNoSuffix = RandomUtil.randomNumbers(2) + RandomUtil.randomChar("ABCDEF");
|
||||
// return orderNoPrefix + orderNoMiddle1 + orderNoMiddle2 + orderNoSuffix;
|
||||
// }
|
||||
//
|
||||
// @PostMapping("/device/live")
|
||||
// public Result deviceLive(@RequestParam String deviceId, @RequestParam String channelId) {
|
||||
// return new Result().success(DHRequestUtil.live(deviceId, channelId));
|
||||
// }
|
||||
//
|
||||
// @PostMapping("/device/liveInfo")
|
||||
// public Result deviceLiveInfo(@RequestParam String deviceId, @RequestParam String channelId) {
|
||||
// return new Result().success(DHRequestUtil.liveInfo(deviceId, channelId));
|
||||
// }
|
||||
//
|
||||
// @PostMapping("/device/delLive")
|
||||
// public Result delLive(@RequestParam String liveToken) {
|
||||
// return new Result().success(DHRequestUtil.delLive(liveToken));
|
||||
// }
|
||||
//
|
||||
// @PostMapping("/device/list")
|
||||
// public Result deviceList(@RequestParam Integer page, @RequestParam Integer pageSize) {
|
||||
// return new Result().success(DHRequestUtil.deviceList(Collections.asMap("pageNum", page, "pageSize", pageSize)));
|
||||
// }
|
||||
//
|
||||
// @PostMapping("/device/createDeviceStreamUrl")
|
||||
// public Result createDeviceStreamUrl(@RequestParam String deviceId, @RequestParam String channelId) {
|
||||
// return new Result().success(DHRequestUtil.createDeviceStreamUrl(deviceId, channelId));
|
||||
// }
|
||||
//
|
||||
// @PostMapping("/store/list")
|
||||
// public Result storeList(@RequestParam Integer page, @RequestParam Integer pageSize) {
|
||||
// return new Result().success(DHRequestUtil.storeList(page, pageSize));
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
package com.evotech.hd.cloud.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.evotech.hd.cloud.entity.order.Order;
|
||||
import com.evotech.hd.common.core.Dto.home.*;
|
||||
import com.evotech.hd.common.core.Dto.request.HomeRequestDto;
|
||||
import com.evotech.hd.common.core.constant.HDConstant;
|
||||
import com.evotech.hd.common.core.permission.DataScope;
|
||||
import com.evotech.hd.common.core.permission.DataScopes;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
/**
|
||||
* 接口
|
||||
*
|
||||
* @ClassName:OrderMapper
|
||||
* @date: 2025年05月16日 14:00
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@DataScopes({
|
||||
@DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE),
|
||||
@DataScope(permissionObject = HDConstant.COMPANY_ROLE_CODE, permissionScopeName = "plate_num", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_CAR_CODE),
|
||||
})
|
||||
//@DataScopeOpenMethod(openMethod = true, methodName = {"homeFindHalfYearAmountData"})
|
||||
public interface OrderDao extends BaseMapper<Order> {
|
||||
|
||||
List<HomeOrderSwapBatteryProportionDto> homeFindProportionData(@Param("params") HomeRequestDto params);
|
||||
|
||||
List<HomeOrderSwapBatteryAmountDto> homeFindAmountData(@Param("params") HomeRequestDto params);
|
||||
//
|
||||
List<HomeOrderSwapBatteryHalfYearDto> homeFindHalfYearOrderData(@Param("params") HomeRequestDto params);
|
||||
|
||||
// @DataScope(permissionObject = HDConstant.OPERATOR_ROLE_CODE, tableAlias = "osb", permissionScopeName = "station_code", permissionScopeRedisKey = HDConstant.PermissionConstant.PERMISSION_STATION_CODE)
|
||||
List<HomeOrderSwapBatteryHalfYearAmountDto> homeFindHalfYearAmountData(@Param("params") HomeRequestDto params);
|
||||
//因为站端不需要显示金额, 所有重新写一个
|
||||
List<HomeOrderSwapBatteryHalfYearAmountDto> homeFindHalfYearStationAmountData(@Param("params") HomeRequestDto params);
|
||||
|
||||
Long homeFindOrderCountData(@Param("date") Date date);
|
||||
|
||||
Double homeFindOrderAmountData(@Param("date") Date date);
|
||||
|
||||
List<HomeOrderInfo> findOrderListByStatus(@Param("status") Integer status);
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package com.evotech.hd.cloud.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.evotech.hd.cloud.entity.order.OrderDetail;
|
||||
|
||||
/**
|
||||
* 接口
|
||||
*
|
||||
* @ClassName:OrderDetailDap
|
||||
* @date: 2025年05月17日 11:09
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
public interface OrderDetailDao extends BaseMapper<OrderDetail> {
|
||||
}
|
||||
@ -4,15 +4,13 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author zrb
|
||||
@ -57,4 +55,15 @@ public class MessageMqtt implements Serializable {
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
|
||||
private Date ctime;
|
||||
|
||||
public MessageMqtt() {
|
||||
}
|
||||
|
||||
public MessageMqtt(String stationCode, String direction, String type, String messageFunction, Date ctime) {
|
||||
this.stationCode = stationCode;
|
||||
this.direction = direction;
|
||||
this.type = type;
|
||||
this.messageFunction = messageFunction;
|
||||
this.ctime = ctime;
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,59 @@
|
||||
package com.evotech.hd.cloud.entity.order;
|
||||
|
||||
import com.evotech.hd.common.core.entity.IdEntity;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:BaseOrder
|
||||
* @date: 2025年05月16日 11:11
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Data
|
||||
public class BaseOrder extends IdEntity {
|
||||
|
||||
/***
|
||||
* 订单编码
|
||||
*/
|
||||
private String orderNo;
|
||||
|
||||
/***
|
||||
* 订单金额
|
||||
*/
|
||||
private Integer orderAmount;
|
||||
|
||||
/***
|
||||
* 订单状态, 具体参考 HDConstant.OrderConstant.ORDER_STATUS_*
|
||||
*/
|
||||
private Integer status;
|
||||
/***
|
||||
* 支付方式 具体参考 HDConstant.OrderConstant.PAY_TYPE_*
|
||||
*/
|
||||
private String payType;
|
||||
/***
|
||||
* 支付时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date payTime;
|
||||
/***
|
||||
* 支付人的wuId
|
||||
*/
|
||||
private String wuId;
|
||||
|
||||
/***
|
||||
* 第三方返回的唯一订单标识
|
||||
*/
|
||||
private String notifyOrderNo;
|
||||
/***
|
||||
* 支付的回调信息
|
||||
*/
|
||||
private String notifyInfo;
|
||||
}
|
||||
@ -0,0 +1,77 @@
|
||||
package com.evotech.hd.cloud.entity.order;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:SwapOrder
|
||||
* @date: 2025年05月16日 11:29
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName(value = "yt_t_product_order", schema = "hd_cloud_manage")
|
||||
public class Order extends BaseOrder{
|
||||
|
||||
private Integer orderPreId;
|
||||
|
||||
/***
|
||||
* 预约用户ID
|
||||
*/
|
||||
private Integer preUid;
|
||||
|
||||
/***
|
||||
* 预约用户名称
|
||||
*/
|
||||
private String preName;
|
||||
/***
|
||||
* 订单类型, 具体参考 HDConstant.OrderConstant.ORDER_TYPE_*
|
||||
*/
|
||||
private Integer orderType;
|
||||
/***
|
||||
* 车牌号
|
||||
*/
|
||||
private String plateNum;
|
||||
|
||||
/***
|
||||
* 下单时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date orderTime;
|
||||
/***
|
||||
* '换电站编码'
|
||||
*/
|
||||
private String stationCode;
|
||||
|
||||
/***
|
||||
* ''换电站名称''
|
||||
*/
|
||||
private String stationName;
|
||||
|
||||
/***
|
||||
* 订单状态, 具体参考 HDConstant.DELETE_*
|
||||
*/
|
||||
private Integer delFlag;
|
||||
|
||||
/***
|
||||
* 备注信息
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/***
|
||||
* 变更时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTime;
|
||||
}
|
||||
@ -0,0 +1,108 @@
|
||||
package com.evotech.hd.cloud.entity.order;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.evotech.hd.common.core.entity.IdEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:OrderDetail
|
||||
* @date: 2025年05月17日 9:10
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Data
|
||||
@TableName(value = "yt_t_order_detail", schema = "hd_cloud_manage")
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
public class OrderDetail extends IdEntity {
|
||||
|
||||
private Integer orderId;
|
||||
|
||||
/***
|
||||
* 计费类型, 具体参考 HDConstant.OrderConstant.FEE_TYPE_*
|
||||
*/
|
||||
private Integer feeType;
|
||||
/***
|
||||
* 订单金额 (此金额是当前订单的金额, 不包含基础服务费, 所以不是订单总额)
|
||||
*/
|
||||
private Integer orderFee;
|
||||
/***
|
||||
* 服务费
|
||||
*/
|
||||
private Integer serviceFee;
|
||||
/***
|
||||
* 单价(分)
|
||||
*/
|
||||
private Integer unitPrice;
|
||||
/***
|
||||
* 服务开始时间
|
||||
*/
|
||||
private Date serviceTimeBegin;
|
||||
/***
|
||||
* 服务结束时间
|
||||
*/
|
||||
private Date serviceTimeEnd;
|
||||
/***
|
||||
* 订单开始时间
|
||||
*/
|
||||
private Date orderTimeBegin;
|
||||
/***
|
||||
* 订单结束时间
|
||||
*/
|
||||
private Date orderTimeEnd;
|
||||
/***
|
||||
* 费用标准详情
|
||||
*/
|
||||
private String feeStandard;
|
||||
/***
|
||||
* 耗电量; 如果是soc结算 则是soc的差值, ODO则是里程
|
||||
*/
|
||||
private Double electricityQuantity;
|
||||
|
||||
/***
|
||||
* 开始充电的电量
|
||||
*/
|
||||
private Double electStart;
|
||||
/***
|
||||
* 结束充电的电量
|
||||
*/
|
||||
private Double electEnd;
|
||||
/***
|
||||
* 租借电池包仓位
|
||||
*/
|
||||
private String rentBatNo;
|
||||
/***
|
||||
* 租借电池包编码
|
||||
*/
|
||||
private String rentBatCode;
|
||||
/***
|
||||
* 租借电池包SOC
|
||||
*/
|
||||
private Double rentBatSOC;
|
||||
/***
|
||||
* 归还电池包仓位
|
||||
*/
|
||||
private String returnBatNo;
|
||||
/***
|
||||
* 归还电池包编码
|
||||
*/
|
||||
private String returnBatCode;
|
||||
/***
|
||||
* 归还电池包SOC
|
||||
*/
|
||||
private Double returnBatSOC;
|
||||
/***
|
||||
* 换电模式 HDConstant.OrderConstant.CHANGE_MODE_*
|
||||
*/
|
||||
private Integer changeMode;
|
||||
/***
|
||||
* 换电车道 HDConstant.OrderConstant.CHANGE_LANE_*
|
||||
*/
|
||||
private Integer changeLane;
|
||||
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
package com.evotech.hd.cloud.entity.order;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 充值订单类
|
||||
* @ClassName:RechargeOrder
|
||||
* @date: 2025年05月16日 11:06
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
@TableName(value = "yt_t_recharge_order", schema = "hd_cloud_manage")
|
||||
public class RechargeOrder extends BaseOrder {
|
||||
|
||||
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
package com.evotech.hd.cloud.entity.vo;
|
||||
|
||||
import com.evotech.hd.common.core.Dto.result.home.HomeOrderInfo;
|
||||
import com.evotech.hd.common.core.Dto.home.HomeOrderInfo;
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.evotech.hd.cloud.entity.vo;
|
||||
|
||||
import com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryProportionDto;
|
||||
import com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryProportionDto;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.evotech.hd.cloud.entity.vo;
|
||||
|
||||
import com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryHalfYearAmountDto;
|
||||
import com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryHalfYearAmountDto;
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.evotech.hd.cloud.entity.vo;
|
||||
|
||||
import com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryHalfYearAmountDto;
|
||||
import com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryProportionDto;
|
||||
import com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryHalfYearAmountDto;
|
||||
import com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryProportionDto;
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.evotech.hd.cloud.entity.vo;
|
||||
|
||||
import com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryHalfYearAmountDto;
|
||||
import com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryHalfYearAmountDto;
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
package com.evotech.hd.cloud.entity.vo;
|
||||
|
||||
import com.evotech.hd.cloud.entity.MessageMqtt;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:MqttMessageParam
|
||||
* @date: 2025年05月19日 10:26
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Data
|
||||
public class MqttMessageParam extends MessageMqtt {
|
||||
|
||||
/***
|
||||
* 订单编号
|
||||
*/
|
||||
String orderNo;
|
||||
|
||||
public MqttMessageParam() {
|
||||
}
|
||||
|
||||
|
||||
public MqttMessageParam(String orderNo, String stationCode, String direction, String type, String messageFunction, Date ctime) {
|
||||
super(stationCode, direction, type, messageFunction, ctime);
|
||||
this.orderNo = orderNo;
|
||||
}
|
||||
}
|
||||
@ -43,6 +43,12 @@ public class MqttResponse<T> implements Serializable {
|
||||
this.msg=errorMessage;
|
||||
return this;
|
||||
}
|
||||
public MqttResponse<T> error(T data, String errorMessage){
|
||||
this.code=ERROR;
|
||||
this.msg=errorMessage;
|
||||
this.data=data;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MqttResponse<T> paramsError(String errorMessage){
|
||||
this.code=PARAMS_ERROR;
|
||||
|
||||
@ -23,13 +23,10 @@ import com.evotech.hd.cloud.mqtt.message.dto.newer.req.carinfo.CarInfoResponse;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.req.carinfo.VehicleData;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.req.order.*;
|
||||
import com.evotech.hd.cloud.mqtt.message.processor.strategy.MqttStrategyExchangeProcessor;
|
||||
import com.evotech.hd.cloud.service.OrderSwapBatteryService;
|
||||
import com.evotech.hd.cloud.service.WechatUserService;
|
||||
import com.evotech.hd.cloud.utils.CommonUtil;
|
||||
import com.evotech.hd.common.core.dao.cloud.OrderSwapBatteryDao;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
import com.evotech.hd.common.core.entity.cloud.BatteryStationDc;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre;
|
||||
import com.evotech.hd.common.core.entity.cloud.VehicleWechatUserRelation;
|
||||
import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse;
|
||||
@ -62,13 +59,13 @@ public class RequestMessageService {
|
||||
private MessageUtilService messageUtilService;
|
||||
@Resource
|
||||
private BatteryStationDcDao batteryStationDcDao;
|
||||
@Resource
|
||||
private OrderSwapBatteryDao orderSwapBatteryDao;
|
||||
// @Resource
|
||||
// private OrderSwapBatteryDao orderSwapBatteryDao;
|
||||
|
||||
@Resource
|
||||
private OrderSwapBatteryPreDao orderSwapBatteryPreDao;
|
||||
@Resource
|
||||
private OrderSwapBatteryService orderSwapBatteryService;
|
||||
// @Resource
|
||||
// private OrderSwapBatteryService orderSwapBatteryService;
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
@Autowired
|
||||
@ -93,10 +90,10 @@ public class RequestMessageService {
|
||||
OrderByPlateNumReq orderByPlateNumReq = JSONUtil.toBean(dataBody, OrderByPlateNumReq.class);
|
||||
handleOrderByPlateNum(topic, header, orderByPlateNumReq);
|
||||
break;
|
||||
case FUN_CANCELORDER:
|
||||
CancelOrderReq cancelOrder = JSONUtil.toBean(dataBody, CancelOrderReq.class);
|
||||
handlOrderCancel(topic,header,cancelOrder);
|
||||
break;
|
||||
// case FUN_CANCELORDER:
|
||||
// CancelOrderReq cancelOrder = JSONUtil.toBean(dataBody, CancelOrderReq.class);
|
||||
// handlOrderCancel(topic,header,cancelOrder);
|
||||
// break;
|
||||
case FUN_STARTSWAP:
|
||||
BatterySwapResponse battery = JSONUtil.toBean(dataBody, BatterySwapResponse.class);
|
||||
handlStartSwap(topic,header,battery);
|
||||
@ -144,28 +141,28 @@ public class RequestMessageService {
|
||||
* @param header
|
||||
* @param cancelOrder
|
||||
*/
|
||||
private void handlOrderCancel(MessageTopic topic, MqttMessageHeader header, CancelOrderReq cancelOrder) {
|
||||
Date d = new Date();
|
||||
CancelOrderResponse response = new CancelOrderResponse();
|
||||
|
||||
Result<Integer> integerResult = orderSwapBatteryService.cancelOrder(cancelOrder.getOrderNo(), 9);
|
||||
if (integerResult.getStatus()==0){
|
||||
response.setCode(0);
|
||||
response.setMsg(integerResult.getMsg());
|
||||
response.setOrderNo(cancelOrder.getOrderNo());
|
||||
}else {
|
||||
response.setCode(1);
|
||||
response.setMsg(integerResult.getMsg());
|
||||
response.setOrderNo("OK");
|
||||
}
|
||||
// 发送
|
||||
topic.setDataDirection("M2S");
|
||||
topic.setMessageType(MqttMessageTypeEnum.RESPONSE.getType());
|
||||
header.setFunction(RequestFunctionTypesEnum.FUN_CANCELORDER.getReFunction());
|
||||
header.setTimeStamp(DateUtil.format(d, DatePattern.NORM_DATETIME_FORMATTER));
|
||||
log.info("\r\n=====>>>站端取消订单--MQTT发送到消息主题:{},头部信息:{}订单编码;{},message:{}", topic,header, cancelOrder.getOrderNo(),JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN)));
|
||||
messageUtilService.publishAESMessage(topic, header, JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN)));
|
||||
}
|
||||
// private void handlOrderCancel(MessageTopic topic, MqttMessageHeader header, CancelOrderReq cancelOrder) {
|
||||
// Date d = new Date();
|
||||
// CancelOrderResponse response = new CancelOrderResponse();
|
||||
//
|
||||
// Result<Integer> integerResult = orderSwapBatteryService.cancelOrder(cancelOrder.getOrderNo(), 9);
|
||||
// if (integerResult.getStatus()==0){
|
||||
// response.setCode(0);
|
||||
// response.setMsg(integerResult.getMsg());
|
||||
// response.setOrderNo(cancelOrder.getOrderNo());
|
||||
// }else {
|
||||
// response.setCode(1);
|
||||
// response.setMsg(integerResult.getMsg());
|
||||
// response.setOrderNo("OK");
|
||||
// }
|
||||
// // 发送
|
||||
// topic.setDataDirection("M2S");
|
||||
// topic.setMessageType(MqttMessageTypeEnum.RESPONSE.getType());
|
||||
// header.setFunction(RequestFunctionTypesEnum.FUN_CANCELORDER.getReFunction());
|
||||
// header.setTimeStamp(DateUtil.format(d, DatePattern.NORM_DATETIME_FORMATTER));
|
||||
// log.info("\r\n=====>>>站端取消订单--MQTT发送到消息主题:{},头部信息:{}订单编码;{},message:{}", topic,header, cancelOrder.getOrderNo(),JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN)));
|
||||
// messageUtilService.publishAESMessage(topic, header, JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN)));
|
||||
// }
|
||||
|
||||
/**
|
||||
* 站端添加预约单
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
package com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.request;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.evotech.hd.cloud.mqtt.enums.RequestFunctionTypesEnum;
|
||||
import com.evotech.hd.cloud.mqtt.message.MessageTopic;
|
||||
import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.req.MqttResponse;
|
||||
import com.evotech.hd.cloud.mqtt.message.processor.strategy.MqttStrategyExchangeProcessor;
|
||||
import com.evotech.hd.cloud.service.OrderService;
|
||||
import com.evotech.hd.common.core.Dto.Result;
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* 取消订单请求类
|
||||
*
|
||||
* @ClassName:MqttRequestCancelOrderExchangeProcessorImpl
|
||||
* @date: 2025年05月19日 14:51
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Service
|
||||
public class MqttRequestCancelOrderExchangeProcessorImpl implements MqttStrategyExchangeProcessor {
|
||||
@Resource
|
||||
OrderService orderService;
|
||||
|
||||
@Override
|
||||
public boolean accept(String functionName) {
|
||||
return RequestFunctionTypesEnum.FUN_CANCELORDER.getFunction().equals(functionName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) {
|
||||
String orderNo = dataBody.getStr("orderNo");
|
||||
Assert.hasText(orderNo, "orderNo is null");
|
||||
|
||||
Result<Boolean> updateResult = orderService.updateStatus(orderNo, 9);
|
||||
MqttResponse<String> response = null;
|
||||
if(updateResult.getData()){
|
||||
response = new MqttResponse().success(JSONUtil.toJsonStr(Collections.asMap("orderNo", orderNo)));
|
||||
}else{
|
||||
response = new MqttResponse().error(JSONUtil.toJsonStr(Collections.asMap("orderNo", orderNo)),updateResult.getMsg());
|
||||
}
|
||||
sendAESMessage(topic, header, RequestFunctionTypesEnum.FUN_CANCELORDER, response);
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,93 @@
|
||||
package com.evotech.hd.cloud.mqtt.message.processor.strategy.impl.request;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONConfig;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.evotech.hd.cloud.mqtt.enums.MqttMessageTypeEnum;
|
||||
import com.evotech.hd.cloud.mqtt.enums.RequestFunctionTypesEnum;
|
||||
import com.evotech.hd.cloud.mqtt.message.MessageTopic;
|
||||
import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.req.order.OrdeSwapBatteryPreRespose;
|
||||
import com.evotech.hd.cloud.mqtt.message.processor.strategy.MqttStrategyExchangeProcessor;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre;
|
||||
import com.evotech.hd.common.core.entity.wechat.WechatUser;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* 站端请求创建预约单类
|
||||
*
|
||||
* @ClassName:MqttRequestPreOrderExchangeProcessorImpl
|
||||
* @date: 2025年05月19日 17:41
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Service
|
||||
public class MqttRequestPreOrderExchangeProcessorImpl implements MqttStrategyExchangeProcessor {
|
||||
@Override
|
||||
public boolean accept(String functionName) {
|
||||
return RequestFunctionTypesEnum.FUN_PREORDER.getFunction().equals(functionName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exchange(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) {
|
||||
OrderSwapBatteryPre orderSwapBatteryPre = JSONUtil.toBean(dataBody, OrderSwapBatteryPre.class);
|
||||
OrdeSwapBatteryPreRespose response = new OrdeSwapBatteryPreRespose();
|
||||
Date d = new Date();
|
||||
// 1. 基础字段校验
|
||||
if (validateRequiredFields(orderSwapBatteryPre)) {
|
||||
// 返回错误消息
|
||||
response.setStationPreOrderId(orderSwapBatteryPre.getSourceId());
|
||||
response.setMsg("预约信息不完整");
|
||||
response.setCode(0);
|
||||
}else {
|
||||
//添加预约单
|
||||
WechatUser wechatUser =wechatUserService.selectUcode(orderSwapBatteryPre.getPhone(),orderSwapBatteryPre.getUname());
|
||||
//查询用户编码
|
||||
orderSwapBatteryPre.setUcode(wechatUser.getWuid());
|
||||
orderSwapBatteryPre.setSource(3);
|
||||
Result<Integer> integerResult = orderSwapBatteryService.addPre(orderSwapBatteryPre);
|
||||
//添加失败情况
|
||||
if (integerResult.getStatus()==0){
|
||||
response.setStationPreOrderId(orderSwapBatteryPre.getSourceId());
|
||||
//返回失败状态
|
||||
response.setMsg(integerResult.getMsg());
|
||||
response.setCode(0);
|
||||
}else{
|
||||
response.setStationPreOrderId(orderSwapBatteryPre.getSourceId());
|
||||
response.setCode(1);
|
||||
response.setMsg("OK");
|
||||
}
|
||||
}
|
||||
// 发送
|
||||
topic.setDataDirection("M2S");
|
||||
topic.setMessageType(MqttMessageTypeEnum.RESPONSE.getType());
|
||||
header.setFunction(RequestFunctionTypesEnum.FUN_PREORDER.getReFunction());
|
||||
header.setTimeStamp(DateUtil.format(d, DatePattern.NORM_DATETIME_FORMATTER));
|
||||
log.info("\r\n=====>>>站端添加预约单--MQTT发送到消息主题:{},头部信息:{},message:{}", topic,header, JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN)));
|
||||
messageUtilService.publishAESMessage(topic, header, JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN)));
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private boolean validateRequiredFields(OrderSwapBatteryPre order) {
|
||||
return Stream.of(
|
||||
order.getPlateNum(),
|
||||
order.getPhone(),
|
||||
order.getStationCode(),
|
||||
order.getStationName(),
|
||||
order.getUname(),
|
||||
order.getSwapDay(),
|
||||
order.getSwapDuration(),
|
||||
order.getReservationTime()
|
||||
).anyMatch(StrUtil::isBlankIfStr);
|
||||
}
|
||||
}
|
||||
@ -7,7 +7,7 @@ import com.evotech.hd.cloud.mqtt.message.MessageTopic;
|
||||
import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.req.MqttResponse;
|
||||
import com.evotech.hd.cloud.mqtt.message.processor.strategy.MqttStrategyExchangeProcessor;
|
||||
import com.evotech.hd.cloud.service.OrderSwapBatteryService;
|
||||
import com.evotech.hd.cloud.service.OrderSwapBatteryPreService;
|
||||
import com.evotech.hd.cloud.service.VehicleService;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -32,7 +32,7 @@ public class MqttRequestPushCarInfoExchangeProcessorImpl implements MqttStrategy
|
||||
@Resource
|
||||
VehicleService vehicleService;
|
||||
@Resource
|
||||
OrderSwapBatteryService orderSwapBatteryService;
|
||||
OrderSwapBatteryPreService orderSwapBatteryPreService;
|
||||
|
||||
@Override
|
||||
public boolean accept(String functionName) {
|
||||
@ -56,36 +56,13 @@ public class MqttRequestPushCarInfoExchangeProcessorImpl implements MqttStrategy
|
||||
//如果response == null 则证明 车辆创建成功了
|
||||
if(response == null){
|
||||
//创建预约订单
|
||||
if (orderSwapBatteryService.addPreByPlateNum(plateNum, topic.getStationCode())){
|
||||
if (orderSwapBatteryPreService.addPreByPlateNum(plateNum, topic.getStationCode())){
|
||||
//返回状态信息
|
||||
response = new MqttResponse().success("预约单初始化完成");
|
||||
}else{
|
||||
response = new MqttResponse().error("车辆初始化完成, 但是预约单创建失败了");
|
||||
}
|
||||
}
|
||||
// if (vehicleService.existsVehicleByPlateNum(plateNum)){
|
||||
// //创建预约订单
|
||||
// if (orderSwapBatteryService.addPreByPlanNum(plateNum, topic.getStationCode())){
|
||||
// //返回状态信息
|
||||
// response = new MqttResponse().success("预约单初始化完成");
|
||||
// }else{
|
||||
// response = new MqttResponse().error("车辆初始化完成, 但是预约单创建失败了");
|
||||
// }
|
||||
// }else{
|
||||
// //没有车辆信息, 开始创建
|
||||
// if(vehicleService.createVehicleByPlateNum(plateNum, topic.getStationCode())){
|
||||
// //创建预约订单
|
||||
// if (orderSwapBatteryService.addPreByPlanNum(plateNum, topic.getStationCode())){
|
||||
// //返回状态信息
|
||||
// response = new MqttResponse().success("预约单初始化完成");
|
||||
// }else{
|
||||
// response = new MqttResponse().error("车辆初始化完成, 但是预约单创建失败了");
|
||||
// }
|
||||
// }else{
|
||||
// response = new MqttResponse().error("创建车辆信息失败了");
|
||||
// }
|
||||
//
|
||||
// }
|
||||
}else{
|
||||
response = new MqttResponse().error("参数不全, 没有车牌号信息");
|
||||
}
|
||||
|
||||
@ -43,7 +43,13 @@ public class MqttStateStationStateExchangeProcessor implements MqttStrategyExcha
|
||||
* fire: 获取消防告警信号 0-未知;1-正常;2-告警
|
||||
*/
|
||||
//通知云端站做状态调整
|
||||
batteryStationService.updateStatusByAlarm(topic.getStationCode(), dataBody.getInt("state"), dataBody.getStr("smoke"), dataBody.getInt("fire"));
|
||||
saveMongoDB(topic, MongoConstant.STATION_INFO_BASE, header.getFunction(),new StationState(dataBody.toString()));
|
||||
try {
|
||||
batteryStationService.updateStatusByAlarm(topic.getStationCode(), dataBody.getInt("state"), dataBody.getStr("smoke"), dataBody.getInt("fire"));
|
||||
} catch (Exception e) {
|
||||
log.error("更改云端数据信息出错"+e.getMessage());
|
||||
}finally {
|
||||
saveMongoDB(topic, MongoConstant.STATION_INFO_BASE, header.getFunction(),new StationState(dataBody.toString()));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
package com.evotech.hd.cloud.service;
|
||||
|
||||
import com.evotech.hd.common.core.Dto.DeviceDto;
|
||||
import com.evotech.hd.common.core.Dto.device.DeviceDto;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
package com.evotech.hd.cloud.service;
|
||||
|
||||
import com.evotech.hd.cloud.entity.request.HomeDataRequest;
|
||||
import com.evotech.hd.cloud.entity.vo.*;
|
||||
import com.evotech.hd.common.core.Dto.Result;
|
||||
|
||||
@ -43,21 +42,21 @@ public interface HomeService {
|
||||
* @return
|
||||
*/
|
||||
Result<List<HomeAlarmData>> alarmData();
|
||||
|
||||
public Result<HomeData1> homeData1(HomeDataRequest hd);
|
||||
|
||||
public Result<HomeData2> homeData2();
|
||||
|
||||
public Result<HomeData3> homeData3(HomeDataRequest hd);
|
||||
|
||||
public Result<HomeData4> homeData4(HomeDataRequest hd);
|
||||
|
||||
public Result<List<HomeData5>> homeData5(HomeDataRequest hd);
|
||||
|
||||
public Result<List<HomeData6>> homeData6(HomeDataRequest hd);
|
||||
|
||||
public Result<HomeData7> homeData7(Integer type);
|
||||
|
||||
public void loginData();
|
||||
//
|
||||
// public Result<HomeData1> homeData1(HomeDataRequest hd);
|
||||
//
|
||||
// public Result<HomeData2> homeData2();
|
||||
//
|
||||
// public Result<HomeData3> homeData3(HomeDataRequest hd);
|
||||
//
|
||||
// public Result<HomeData4> homeData4(HomeDataRequest hd);
|
||||
//
|
||||
// public Result<List<HomeData5>> homeData5(HomeDataRequest hd);
|
||||
//
|
||||
// public Result<List<HomeData6>> homeData6(HomeDataRequest hd);
|
||||
//
|
||||
// public Result<HomeData7> homeData7(Integer type);
|
||||
//
|
||||
// public void loginData();
|
||||
|
||||
}
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
package com.evotech.hd.cloud.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.evotech.hd.cloud.entity.MessageMqtt;
|
||||
import com.evotech.hd.cloud.entity.request.PageListMessageMqttRequest;
|
||||
import com.evotech.hd.cloud.entity.vo.MqttMessageParam;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface MessageMqttService {
|
||||
|
||||
public Result<List<MessageMqtt>> list(PageListMessageMqttRequest plmmr);
|
||||
@ -14,4 +15,6 @@ public interface MessageMqttService {
|
||||
|
||||
public Result<Integer> del();
|
||||
|
||||
public MessageMqtt getOne(MqttMessageParam param);
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
package com.evotech.hd.cloud.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.evotech.hd.cloud.entity.order.Order;
|
||||
import com.evotech.hd.common.core.Dto.Result;
|
||||
import com.evotech.hd.common.core.Dto.order.OrderListVo;
|
||||
import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
|
||||
/**
|
||||
* 订单接口
|
||||
* @ClassName:OrderService
|
||||
* @date: 2025年05月16日 13:56
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
public interface OrderService extends IService<Order> {
|
||||
|
||||
/***
|
||||
* 云平台查询订单列表
|
||||
* @param plsor
|
||||
* @return
|
||||
*/
|
||||
Result<Page<OrderListVo>> pageList(PageListSwapOrderRequest plsor);
|
||||
/***
|
||||
* 订单结算
|
||||
* @param osb
|
||||
* @return
|
||||
*/
|
||||
public Result<String> calculateCost(Order osb);
|
||||
|
||||
/***
|
||||
* 更改订单状态信息
|
||||
*/
|
||||
public Result<Boolean> updateStatus(String orderNo, Integer status);
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package com.evotech.hd.cloud.service;
|
||||
|
||||
/**
|
||||
* 预约单接口
|
||||
*
|
||||
* @ClassName:OrderSwapBatteryPreService
|
||||
* @date: 2025年05月19日 16:16
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
public interface OrderSwapBatteryPreService {
|
||||
|
||||
public Boolean addPreByPlateNum(String plateNum, String stationCode);
|
||||
}
|
||||
@ -1,63 +1,63 @@
|
||||
package com.evotech.hd.cloud.service;
|
||||
|
||||
import com.evotech.hd.cloud.entity.vo.NativePayVO;
|
||||
import com.evotech.hd.cloud.mqtt.message.dto.newer.state.OrderStatusData;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep;
|
||||
import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse;
|
||||
import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest;
|
||||
import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.List;
|
||||
|
||||
public interface OrderSwapBatteryService {
|
||||
|
||||
public Result<Integer> addPre(OrderSwapBatteryPre osbp);
|
||||
|
||||
public Result<Integer> cancelPre(Integer id, Integer status);
|
||||
|
||||
public Result<List<OrderSwapBatteryPre>> listPre(PageListSwapOrderPreRequest plsopr) throws ParseException;
|
||||
|
||||
public Result<Integer> add(OrderSwapBattery osb);
|
||||
|
||||
public Result<Integer> delete(Integer id);
|
||||
|
||||
public Result<Integer> update(OrderSwapBattery osb);
|
||||
|
||||
public Result<List<OrderSwapBattery>> list(PageListSwapOrderRequest plsor);
|
||||
|
||||
public Result<List<OrderSwapBattery>> listByCompany(PageListSwapOrderRequest plsor);
|
||||
|
||||
public Result<List<OrderSwapBatteryStep>> listStep(String orderNo);
|
||||
|
||||
public Result<String> calculateCost1(String orderNo, OrderStatusData statusData);
|
||||
|
||||
public Result<String> calculateCost(OrderSwapBattery osb);
|
||||
|
||||
public Result<String> walletPay(String orderNo, String wuid, String uname);
|
||||
|
||||
public Result<String> companyNativePay(NativePayVO prePay);
|
||||
|
||||
public Result<String> orderQuery(String outTradeNo);
|
||||
|
||||
|
||||
public Result<Integer> cancelOrder(String orderNo, Integer status);
|
||||
|
||||
public Result<Integer> markOrderAsExpired(Integer pkId);
|
||||
|
||||
public Result<Boolean> startSwap(String wuid,String orderId);
|
||||
|
||||
public Result<BatterySwapResponse> getStartSwap(String wuid, String orderId);
|
||||
|
||||
public Result<Integer> checkList(PageListSwapOrderRequest plsor);
|
||||
|
||||
|
||||
public Boolean addPreByPlateNum(String plateNum, String stationCode);
|
||||
|
||||
public List<OrderSwapBatteryPre> findOrderSwapBatteryPreList(String stationCode);
|
||||
|
||||
Boolean clearOrderSwapBatteryPre(List<Integer> ids);
|
||||
}
|
||||
//package com.evotech.hd.cloud.service;
|
||||
//
|
||||
//import com.evotech.hd.cloud.entity.vo.NativePayVO;
|
||||
//import com.evotech.hd.cloud.mqtt.message.dto.newer.state.OrderStatusData;
|
||||
//import com.evotech.hd.common.core.entity.Result;
|
||||
//import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
|
||||
//import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre;
|
||||
//import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep;
|
||||
//import com.evotech.hd.common.core.entity.cloud.request.BatterySwapResponse;
|
||||
//import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest;
|
||||
//import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest;
|
||||
//
|
||||
//import java.text.ParseException;
|
||||
//import java.util.List;
|
||||
//
|
||||
//public interface OrderSwapBatteryService {
|
||||
//
|
||||
// public Result<Integer> addPre(OrderSwapBatteryPre osbp);
|
||||
//
|
||||
// public Result<Integer> cancelPre(Integer id, Integer status);
|
||||
//
|
||||
// public Result<List<OrderSwapBatteryPre>> listPre(PageListSwapOrderPreRequest plsopr) throws ParseException;
|
||||
//
|
||||
// public Result<Integer> add(OrderSwapBattery osb);
|
||||
//
|
||||
// public Result<Integer> delete(Integer id);
|
||||
//
|
||||
// public Result<Integer> update(OrderSwapBattery osb);
|
||||
//
|
||||
// public Result<List<OrderSwapBattery>> list(PageListSwapOrderRequest plsor);
|
||||
//
|
||||
// public Result<List<OrderSwapBattery>> listByCompany(PageListSwapOrderRequest plsor);
|
||||
//
|
||||
// public Result<List<OrderSwapBatteryStep>> listStep(String orderNo);
|
||||
//
|
||||
// public Result<String> calculateCost1(String orderNo, OrderStatusData statusData);
|
||||
//
|
||||
// public Result<String> calculateCost(OrderSwapBattery osb);
|
||||
//
|
||||
// public Result<String> walletPay(String orderNo, String wuid, String uname);
|
||||
//
|
||||
// public Result<String> companyNativePay(NativePayVO prePay);
|
||||
//
|
||||
// public Result<String> orderQuery(String outTradeNo);
|
||||
//
|
||||
//
|
||||
// public Result<Integer> cancelOrder(String orderNo, Integer status);
|
||||
//
|
||||
// public Result<Integer> markOrderAsExpired(Integer pkId);
|
||||
//
|
||||
// public Result<Boolean> startSwap(String wuid,String orderId);
|
||||
//
|
||||
// public Result<BatterySwapResponse> getStartSwap(String wuid, String orderId);
|
||||
//
|
||||
// public Result<Integer> checkList(PageListSwapOrderRequest plsor);
|
||||
//
|
||||
//
|
||||
// public Boolean addPreByPlateNum(String plateNum, String stationCode);
|
||||
//
|
||||
// public List<OrderSwapBatteryPre> findOrderSwapBatteryPreList(String stationCode);
|
||||
//
|
||||
// Boolean clearOrderSwapBatteryPre(List<Integer> ids);
|
||||
//}
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
package com.evotech.hd.cloud.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
*
|
||||
* 类
|
||||
* @ClassName:BaseServiceImpl
|
||||
* @date: 2025年05月16日 14:55
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public class BaseServiceImpl<M extends BaseMapper<T>, T, D> extends ServiceImpl<M,T> {
|
||||
|
||||
Page<D> selectPage(Page<T> page, Wrapper<T> queryWrapper, Function<T,D> function){
|
||||
Page<D> result = new Page<D>();
|
||||
page = getBaseMapper().selectPage(page,queryWrapper);
|
||||
BeanUtils.copyProperties(page, result, "records");
|
||||
if(Collections.isNotEmpty(result.getRecords())){
|
||||
result.setRecords(page.getRecords().stream().map(t ->{
|
||||
return function.apply(t);
|
||||
}).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -6,7 +6,7 @@ import com.evotech.hd.cloud.device.dh.DHRequestUtil;
|
||||
import com.evotech.hd.cloud.service.BatteryStationService;
|
||||
import com.evotech.hd.cloud.service.DHDeviceService;
|
||||
import com.evotech.hd.cloud.service.rpc.ResourceService;
|
||||
import com.evotech.hd.common.core.Dto.DeviceDto;
|
||||
import com.evotech.hd.common.core.Dto.device.DeviceDto;
|
||||
import com.evotech.hd.common.core.Dto.ResultUtil;
|
||||
import com.evotech.hd.common.core.constant.HDConstant;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
|
||||
@ -1,47 +1,34 @@
|
||||
package com.evotech.hd.cloud.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.evotech.hd.cloud.dao.*;
|
||||
import com.evotech.hd.cloud.entity.request.HomeDataRequest;
|
||||
import com.evotech.hd.cloud.entity.vo.*;
|
||||
import com.evotech.hd.cloud.mqtt.enums.StateFunctionTypesEnum;
|
||||
import com.evotech.hd.cloud.service.HomeService;
|
||||
import com.evotech.hd.common.constant.MongoConstant;
|
||||
import com.evotech.hd.common.core.Dto.Result;
|
||||
import com.evotech.hd.common.core.Dto.ResultUtil;
|
||||
import com.evotech.hd.common.core.Dto.home.HomeOrderInfo;
|
||||
import com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryAmountDto;
|
||||
import com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryProportionDto;
|
||||
import com.evotech.hd.common.core.Dto.request.HomeRequestDto;
|
||||
import com.evotech.hd.common.core.Dto.result.home.HomeOrderInfo;
|
||||
import com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryAmountDto;
|
||||
import com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryHalfYearAmountDto;
|
||||
import com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryProportionDto;
|
||||
import com.evotech.hd.common.core.constant.HDConstant;
|
||||
import com.evotech.hd.common.core.dao.cloud.HomeDataOrderSwapCollateDao;
|
||||
import com.evotech.hd.common.core.dao.cloud.HomeDataTradeCollateDao;
|
||||
import com.evotech.hd.common.core.dao.cloud.OrderSwapBatteryDao;
|
||||
import com.evotech.hd.common.core.dao.resource.ProxyOperaterDao;
|
||||
import com.evotech.hd.common.core.dao.wechat.WechatUserDao;
|
||||
import com.evotech.hd.common.core.entity.cloud.*;
|
||||
import com.evotech.hd.common.core.entity.resource.ProxyOperater;
|
||||
import com.evotech.hd.common.core.entity.wechat.WechatUser;
|
||||
import com.evotech.hd.common.core.enums.CodeMsg;
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import com.evotech.hd.common.documnet.StationState;
|
||||
import com.evotech.hd.common.permission.util.RedisPermissionUtils;
|
||||
import com.evotech.hd.common.redis.utils.RedisUtil;
|
||||
import com.evotech.hd.common.service.MongoDBService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
@ -65,13 +52,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
@Resource
|
||||
private VehicleInfoDao vehicleInfoDao;
|
||||
@Resource
|
||||
private OrderSwapBatteryDao orderSwapBatteryDao;
|
||||
// @Resource
|
||||
// private TradeDetailDao tradeDetailDao;
|
||||
@Resource
|
||||
private HomeDataOrderSwapCollateDao homeDataOrderSwapCollateDao;
|
||||
@Resource
|
||||
private HomeDataTradeCollateDao homeDataTradeCollateDao;
|
||||
private OrderDao orderDao;
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
@ -97,7 +78,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
Date d = new Date();
|
||||
HomeRequestDto homeRequestDto = new HomeRequestDto(DateUtil.offsetMonth(d, -5), d);
|
||||
//订单数量 or 订单金额
|
||||
List<HomeOrderSwapBatteryAmountDto> orderAmountlist = orderSwapBatteryDao.homeFindAmountData(homeRequestDto);
|
||||
List<HomeOrderSwapBatteryAmountDto> orderAmountlist = orderDao.homeFindAmountData(homeRequestDto);
|
||||
if(Collections.isNotEmpty(orderAmountlist)){
|
||||
HomeOrderSwapBatteryAmountDto totalFinishOrder = orderAmountlist.stream().filter(i -> Integer.valueOf(7).equals(i.getStatus())).findFirst().orElse(null);
|
||||
if(totalFinishOrder != null){
|
||||
@ -113,7 +94,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
|
||||
//计算占比
|
||||
Map<String, Long> countMap = Collections.emptyMap();
|
||||
List<HomeOrderSwapBatteryProportionDto> list = orderSwapBatteryDao.homeFindProportionData(homeRequestDto);
|
||||
List<HomeOrderSwapBatteryProportionDto> list = orderDao.homeFindProportionData(homeRequestDto);
|
||||
if(Collections.isNotEmpty(list)){
|
||||
//总订单数
|
||||
data.setTotalOrderNum(list.stream().collect(Collectors.summingLong(i -> i.getQuantity())));
|
||||
@ -137,7 +118,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
});
|
||||
data.setCountList(countList);
|
||||
//近半年走势情况
|
||||
data.setTrendList(orderSwapBatteryDao.homeFindHalfYearAmountData(homeRequestDto).stream().sorted((o1,o2) ->{
|
||||
data.setTrendList(orderDao.homeFindHalfYearAmountData(homeRequestDto).stream().sorted((o1,o2) ->{
|
||||
return o1.getMonth().compareTo(o2.getMonth());
|
||||
}).collect(Collectors.toList()));
|
||||
return new Result<HomePlatformData2>().success(data);
|
||||
@ -170,7 +151,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
Date d = new Date();
|
||||
HomeRequestDto homeRequestDto = new HomeRequestDto(DateUtil.beginOfMonth(d), d);
|
||||
//订单数量 or 订单金额
|
||||
List<HomeOrderSwapBatteryAmountDto> orderAmountlist = orderSwapBatteryDao.homeFindAmountData(homeRequestDto);
|
||||
List<HomeOrderSwapBatteryAmountDto> orderAmountlist = orderDao.homeFindAmountData(homeRequestDto);
|
||||
if(Collections.isNotEmpty(orderAmountlist)){
|
||||
HomeOrderSwapBatteryAmountDto totalFinishOrder = orderAmountlist.stream().filter(i -> Integer.valueOf(7).equals(i.getStatus())).findFirst().orElse(null);
|
||||
if(totalFinishOrder != null){
|
||||
@ -188,7 +169,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
homeRequestDto = new HomeRequestDto(DateUtil.offsetMonth(d, -5), d);
|
||||
//订单数量 or 订单金额
|
||||
//计算占比
|
||||
List<HomeOrderSwapBatteryProportionDto> list = orderSwapBatteryDao.homeFindProportionData(homeRequestDto);
|
||||
List<HomeOrderSwapBatteryProportionDto> list = orderDao.homeFindProportionData(homeRequestDto);
|
||||
if(Collections.isNotEmpty(list)){
|
||||
//总订单数
|
||||
data.setHalfYearTotalOrderNum(list.stream().collect(Collectors.summingLong(i -> i.getQuantity())));
|
||||
@ -196,7 +177,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
}
|
||||
|
||||
//近半年走势情况
|
||||
data.setTrendList(orderSwapBatteryDao.homeFindHalfYearAmountData(homeRequestDto).stream().sorted((o1,o2) ->{
|
||||
data.setTrendList(orderDao.homeFindHalfYearAmountData(homeRequestDto).stream().sorted((o1,o2) ->{
|
||||
return o1.getMonth().compareTo(o2.getMonth());
|
||||
}).collect(Collectors.toList()));
|
||||
return new Result<HomePoxyData2>().success(data);
|
||||
@ -222,7 +203,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
|
||||
//订单数量 or 订单金额
|
||||
Date d = new Date();
|
||||
List<HomeOrderSwapBatteryAmountDto> orderAmountlist = orderSwapBatteryDao.homeFindAmountData(new HomeRequestDto(DateUtil.beginOfMonth(d), d));
|
||||
List<HomeOrderSwapBatteryAmountDto> orderAmountlist = orderDao.homeFindAmountData(new HomeRequestDto(DateUtil.beginOfMonth(d), d));
|
||||
if(Collections.isNotEmpty(orderAmountlist)){
|
||||
HomeOrderSwapBatteryAmountDto totalFinishOrder = orderAmountlist.stream().filter(i -> Integer.valueOf(7).equals(i.getStatus())).findFirst().orElse(null);
|
||||
if(totalFinishOrder != null){
|
||||
@ -235,7 +216,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
data.setTotalOrderNum(defaultValue(data.getTotalFinishOrderNum(),0l)+defaultValue(data.getTotalPendingOrderNum(), 0l));
|
||||
}
|
||||
//近半年走势情况
|
||||
data.setTrendList(orderSwapBatteryDao.homeFindHalfYearStationAmountData(new HomeRequestDto(DateUtil.offsetMonth(d, -5), d)).stream().sorted((o1,o2) ->{
|
||||
data.setTrendList(orderDao.homeFindHalfYearStationAmountData(new HomeRequestDto(DateUtil.offsetMonth(d, -5), d)).stream().sorted((o1,o2) ->{
|
||||
return o1.getMonth().compareTo(o2.getMonth());
|
||||
}).collect(Collectors.toList()));
|
||||
return new Result<HomeStationData>().success(data);
|
||||
@ -249,7 +230,7 @@ public class HomeServiceImpl implements HomeService {
|
||||
//2 人员
|
||||
data.setUserNum(wechatUserDao.selectCount(new LambdaQueryWrapper<WechatUser>().select(WechatUser::getPkId)));
|
||||
//获取待结算订单
|
||||
List<HomeOrderInfo> orderInfo = orderSwapBatteryDao.findOrderListByStatus(6);
|
||||
List<HomeOrderInfo> orderInfo = orderDao.findOrderListByStatus(6);
|
||||
//待结算订单数量
|
||||
data.setPendingOrderNum(Long.valueOf(orderInfo.size()));
|
||||
//待结算订单金额
|
||||
@ -299,187 +280,187 @@ public class HomeServiceImpl implements HomeService {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Result<HomeData1> homeData1(HomeDataRequest hd) {
|
||||
// 1. 运营商
|
||||
List<ProxyOperater> list1 = proxyOperaterDao.selectList(new LambdaQueryWrapper<ProxyOperater>()
|
||||
.eq(StringUtils.hasText(hd.getPoCode()), ProxyOperater::getPocode, hd.getPoCode()));
|
||||
HomeData1 data = new HomeData1();
|
||||
data.setProxyer(list1.size());
|
||||
// 2. 换电站
|
||||
List<BatteryStation> list2 = batteryStationDao.selectList(new LambdaQueryWrapper<BatteryStation>()
|
||||
.eq(BatteryStation::getDelFlag, 0)
|
||||
.eq(StringUtils.hasText(hd.getPoCode()), BatteryStation::getProxyId, hd.getPoCode())
|
||||
.eq(StringUtils.hasText(hd.getStationCode()), BatteryStation::getCode, hd.getStationCode()).select(BatteryStation::getStatus));
|
||||
data.setTotalStation(list2.size());
|
||||
int size1 = list2.stream().filter(i -> i.getStatus() == 1).toList().size();
|
||||
data.setWorkStation(size1);
|
||||
// 电池
|
||||
List<BatteryStationDc> list3 = batteryStationDcDao.selectList(new LambdaQueryWrapper<BatteryStationDc>()
|
||||
.eq(BatteryStationDc::getDelFlag, 0)
|
||||
.eq(StringUtils.hasText(hd.getStationCode()), BatteryStationDc::getSourceCode, hd.getStationCode()).select(BatteryStationDc::getStatus));
|
||||
data.setTotalDC(list3.size());
|
||||
int dcSize1 = list3.stream().filter(i -> i.getStatus() == 2).toList().size();
|
||||
data.setChargeDC(dcSize1);
|
||||
int dcSize2 = list3.stream().filter(i -> i.getStatus() == 3).toList().size();
|
||||
data.setAvailableDC(dcSize2);
|
||||
// 机器人
|
||||
List<BatteryStationRobot> list4 = batteryStationRobotDao.selectList(new LambdaQueryWrapper<BatteryStationRobot>()
|
||||
.eq(StringUtils.hasText(hd.getStationCode()), BatteryStationRobot::getStationCode, hd.getStationCode()).select(BatteryStationRobot::getStatus));
|
||||
data.setTotalRobot(list4.size());
|
||||
int robotSize1 = list4.stream().filter(i -> i.getStatus() == 1).toList().size();
|
||||
data.setAvailableRobot(robotSize1);
|
||||
|
||||
return new Result<HomeData1>().success(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<HomeData2> homeData2() {
|
||||
HomeData2 data = new HomeData2();
|
||||
// 1. 公司
|
||||
Long count1 = companyDao.selectCount(new LambdaQueryWrapper<Company>().select(Company::getPkId));
|
||||
data.setConpany(count1.intValue());
|
||||
// 2. 用户
|
||||
Long count2 = wechatUserDao.selectCount(new LambdaQueryWrapper<WechatUser>().select(WechatUser::getPkId));
|
||||
data.setTotalUser(count2.intValue());
|
||||
// 3. 车辆
|
||||
Long count3 = vehicleInfoDao.selectCount(new LambdaQueryWrapper<VehicleInfo>().select(VehicleInfo::getPkId));
|
||||
data.setTotalCar(count3.intValue());
|
||||
|
||||
return new Result<HomeData2>().success(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<HomeData3> homeData3(HomeDataRequest hd) {
|
||||
if (hd.getTimeBegin() == null || hd.getTimeEnd() == null) {
|
||||
return new Result<HomeData3>().error(CodeMsg.PARAM_ERROR,"时间范围未填写!");
|
||||
}
|
||||
HomeData3 data = new HomeData3();
|
||||
data.setDayBegin(DateUtil.format(hd.getTimeBegin(), DatePattern.PURE_DATE_PATTERN));
|
||||
data.setDayEnd(DateUtil.format(hd.getTimeEnd(), DatePattern.PURE_DATE_PATTERN));
|
||||
|
||||
List<HomeOrderSwapBatteryProportionDto> list = orderSwapBatteryDao.homeFindProportionData(new HomeRequestDto(hd.getTimeBegin(), hd.getTimeEnd()));
|
||||
if(Collections.isNotEmpty(list)){
|
||||
Long total = list.stream().collect(Collectors.summingLong(i -> i.getQuantity()));
|
||||
data.setQuantity(total);
|
||||
}
|
||||
data.setStationOrderDataList(list);;
|
||||
return new Result<HomeData3>().success(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<HomeData4> homeData4(HomeDataRequest hd) {
|
||||
if (hd.getTimeBegin() == null || hd.getTimeEnd() == null) {
|
||||
return new Result<HomeData4>().error(CodeMsg.PARAM_ERROR,"时间范围未填写!");
|
||||
}
|
||||
HomeData4 data = new HomeData4();
|
||||
data.setDayBegin(DateUtil.format(hd.getTimeBegin(), DatePattern.PURE_DATE_PATTERN));
|
||||
data.setDayEnd(DateUtil.format(hd.getTimeEnd(), DatePattern.PURE_DATE_PATTERN));
|
||||
|
||||
List<HomeOrderSwapBatteryAmountDto> list = orderSwapBatteryDao.homeFindAmountData(new HomeRequestDto(hd.getTimeBegin(), hd.getTimeEnd()));
|
||||
if(Collections.isNotEmpty(list)){
|
||||
data.setTotalMoney(list.stream().filter(i -> Integer.valueOf(7).equals(i.getStatus())).collect(Collectors.summingDouble(i -> i.getAmount())));
|
||||
data.setTotalRefund(list.stream().filter(i -> Integer.valueOf(-1).equals(i.getStatus())).collect(Collectors.summingDouble(i -> i.getAmount())));
|
||||
}
|
||||
return new Result<HomeData4>().success(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<List<HomeData5>> homeData5(HomeDataRequest hd) {
|
||||
Integer id = RedisPermissionUtils.getUserPkId();
|
||||
String key = HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.IndexConstant.HOME_DATA_5+":"+id;
|
||||
List<HomeData5> list = Collections.emptyList();
|
||||
if(!redisUtil.hasKey(key)){
|
||||
Date d = new Date();
|
||||
list = orderSwapBatteryDao.homeFindHalfYearOrderData(new HomeRequestDto(DateUtil.offsetMonth(d, -6), d)).stream().map(data->{
|
||||
HomeData5 homeData5 = new HomeData5();
|
||||
BeanUtils.copyProperties(data, homeData5);
|
||||
homeData5.setTotalMoney(new BigDecimal(data.getTotalMoney()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
||||
return homeData5;
|
||||
}).sorted((o1,o2) ->{
|
||||
return o1.getMonth().compareTo(o2.getMonth());
|
||||
}).collect(Collectors.toList());
|
||||
redisUtil.set(key, JSONUtil.toJsonStr(list));
|
||||
}else{
|
||||
list = JSONUtil.toList(redisUtil.getStringValue(key), HomeData5.class);
|
||||
}
|
||||
// 1. 找出6个月\
|
||||
Date d = new Date();
|
||||
return new Result<List<HomeData5>>().success(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<List<HomeData6>> homeData6(HomeDataRequest hd) {
|
||||
Integer id = RedisPermissionUtils.getUserPkId();
|
||||
String key = HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.IndexConstant.HOME_DATA_6+":"+id;
|
||||
List<HomeData6> list = Collections.emptyList();
|
||||
if(!redisUtil.hasKey(key)){
|
||||
Date d = new Date();
|
||||
Map<String, List<HomeOrderSwapBatteryHalfYearAmountDto>> mapList= orderSwapBatteryDao.homeFindHalfYearAmountData(new HomeRequestDto(DateUtil.offsetMonth(d, -6), d)).stream().collect(Collectors.groupingBy(HomeOrderSwapBatteryHalfYearAmountDto::getMonth));
|
||||
Iterator<String> it = mapList.keySet().iterator();
|
||||
while (it.hasNext()){
|
||||
String month = it.next();
|
||||
HomeData6 homeData6 = new HomeData6();
|
||||
homeData6.setMonth(month);
|
||||
// List<HomeOrderSwapBatteryHalfYearAmountDto> values = mapList.get(month);
|
||||
// HomeOrderSwapBatteryHalfYearAmountDto wechat = values.stream().filter(f -> Integer.valueOf(7).equals(f.getStatus()) && Integer.valueOf(2).equals(f.getPayType())).findFirst().orElse(null);
|
||||
// if(ObjectUtils.isNotEmpty(wechat)){
|
||||
// homeData6.setInQuantity(wechat.getQuantity());
|
||||
// homeData6.setInMoney(wechat.getTotalMoney());
|
||||
// }
|
||||
//
|
||||
// HomeOrderSwapBatteryHalfYearAmountDto account = values.stream().filter(f -> Integer.valueOf(7).equals(f.getStatus()) && Integer.valueOf(1).equals(f.getPayType())).findFirst().orElse(null);
|
||||
// if(ObjectUtils.isNotEmpty(account)){
|
||||
// homeData6.setWalletQuantity(account.getQuantity());
|
||||
// homeData6.setWalletMoney(account.getTotalMoney());
|
||||
// }
|
||||
//
|
||||
// List<HomeOrderSwapBatteryHalfYearAmountDto> refund = values.stream().filter(f -> Integer.valueOf(-1).equals(f.getStatus())).collect(Collectors.toList());
|
||||
// if(Collections.isNotEmpty(refund)){
|
||||
// homeData6.setRefundQuantity(refund.stream().collect(Collectors.summingLong(i -> i.getQuantity())));
|
||||
// homeData6.setRefundMoney(refund.stream().collect(Collectors.summingDouble(i -> i.getTotalMoney())));
|
||||
// }
|
||||
list.add(homeData6);
|
||||
}
|
||||
list = list.stream().sorted((o1,o2) ->{
|
||||
return o1.getMonth().compareTo(o2.getMonth());
|
||||
}).collect(Collectors.toList());
|
||||
redisUtil.set(key, JSONUtil.toJsonStr(list));
|
||||
}else{
|
||||
list = JSONUtil.toList(redisUtil.getStringValue(key), HomeData6.class);
|
||||
}
|
||||
return new Result<List<HomeData6>>().success(list);
|
||||
}
|
||||
//
|
||||
// @Override
|
||||
// public Result<HomeData1> homeData1(HomeDataRequest hd) {
|
||||
// // 1. 运营商
|
||||
// List<ProxyOperater> list1 = proxyOperaterDao.selectList(new LambdaQueryWrapper<ProxyOperater>()
|
||||
// .eq(StringUtils.hasText(hd.getPoCode()), ProxyOperater::getPocode, hd.getPoCode()));
|
||||
// HomeData1 data = new HomeData1();
|
||||
// data.setProxyer(list1.size());
|
||||
// // 2. 换电站
|
||||
// List<BatteryStation> list2 = batteryStationDao.selectList(new LambdaQueryWrapper<BatteryStation>()
|
||||
// .eq(BatteryStation::getDelFlag, 0)
|
||||
// .eq(StringUtils.hasText(hd.getPoCode()), BatteryStation::getProxyId, hd.getPoCode())
|
||||
// .eq(StringUtils.hasText(hd.getStationCode()), BatteryStation::getCode, hd.getStationCode()).select(BatteryStation::getStatus));
|
||||
// data.setTotalStation(list2.size());
|
||||
// int size1 = list2.stream().filter(i -> i.getStatus() == 1).toList().size();
|
||||
// data.setWorkStation(size1);
|
||||
// // 电池
|
||||
// List<BatteryStationDc> list3 = batteryStationDcDao.selectList(new LambdaQueryWrapper<BatteryStationDc>()
|
||||
// .eq(BatteryStationDc::getDelFlag, 0)
|
||||
// .eq(StringUtils.hasText(hd.getStationCode()), BatteryStationDc::getSourceCode, hd.getStationCode()).select(BatteryStationDc::getStatus));
|
||||
// data.setTotalDC(list3.size());
|
||||
// int dcSize1 = list3.stream().filter(i -> i.getStatus() == 2).toList().size();
|
||||
// data.setChargeDC(dcSize1);
|
||||
// int dcSize2 = list3.stream().filter(i -> i.getStatus() == 3).toList().size();
|
||||
// data.setAvailableDC(dcSize2);
|
||||
// // 机器人
|
||||
// List<BatteryStationRobot> list4 = batteryStationRobotDao.selectList(new LambdaQueryWrapper<BatteryStationRobot>()
|
||||
// .eq(StringUtils.hasText(hd.getStationCode()), BatteryStationRobot::getStationCode, hd.getStationCode()).select(BatteryStationRobot::getStatus));
|
||||
// data.setTotalRobot(list4.size());
|
||||
// int robotSize1 = list4.stream().filter(i -> i.getStatus() == 1).toList().size();
|
||||
// data.setAvailableRobot(robotSize1);
|
||||
//
|
||||
// return new Result<HomeData1>().success(data);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Result<HomeData2> homeData2() {
|
||||
// HomeData2 data = new HomeData2();
|
||||
// // 1. 公司
|
||||
// Long count1 = companyDao.selectCount(new LambdaQueryWrapper<Company>().select(Company::getPkId));
|
||||
// data.setConpany(count1.intValue());
|
||||
// // 2. 用户
|
||||
// Long count2 = wechatUserDao.selectCount(new LambdaQueryWrapper<WechatUser>().select(WechatUser::getPkId));
|
||||
// data.setTotalUser(count2.intValue());
|
||||
// // 3. 车辆
|
||||
// Long count3 = vehicleInfoDao.selectCount(new LambdaQueryWrapper<VehicleInfo>().select(VehicleInfo::getPkId));
|
||||
// data.setTotalCar(count3.intValue());
|
||||
//
|
||||
// return new Result<HomeData2>().success(data);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Result<HomeData3> homeData3(HomeDataRequest hd) {
|
||||
// if (hd.getTimeBegin() == null || hd.getTimeEnd() == null) {
|
||||
// return new Result<HomeData3>().error(CodeMsg.PARAM_ERROR,"时间范围未填写!");
|
||||
// }
|
||||
// HomeData3 data = new HomeData3();
|
||||
// data.setDayBegin(DateUtil.format(hd.getTimeBegin(), DatePattern.PURE_DATE_PATTERN));
|
||||
// data.setDayEnd(DateUtil.format(hd.getTimeEnd(), DatePattern.PURE_DATE_PATTERN));
|
||||
//
|
||||
// List<HomeOrderSwapBatteryProportionDto> list = orderDao.homeFindProportionData(new HomeRequestDto(hd.getTimeBegin(), hd.getTimeEnd()));
|
||||
// if(Collections.isNotEmpty(list)){
|
||||
// Long total = list.stream().collect(Collectors.summingLong(i -> i.getQuantity()));
|
||||
// data.setQuantity(total);
|
||||
// }
|
||||
// data.setStationOrderDataList(list);;
|
||||
// return new Result<HomeData3>().success(data);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Result<HomeData4> homeData4(HomeDataRequest hd) {
|
||||
// if (hd.getTimeBegin() == null || hd.getTimeEnd() == null) {
|
||||
// return new Result<HomeData4>().error(CodeMsg.PARAM_ERROR,"时间范围未填写!");
|
||||
// }
|
||||
// HomeData4 data = new HomeData4();
|
||||
// data.setDayBegin(DateUtil.format(hd.getTimeBegin(), DatePattern.PURE_DATE_PATTERN));
|
||||
// data.setDayEnd(DateUtil.format(hd.getTimeEnd(), DatePattern.PURE_DATE_PATTERN));
|
||||
//
|
||||
// List<HomeOrderSwapBatteryAmountDto> list = orderDao.homeFindAmountData(new HomeRequestDto(hd.getTimeBegin(), hd.getTimeEnd()));
|
||||
// if(Collections.isNotEmpty(list)){
|
||||
// data.setTotalMoney(list.stream().filter(i -> Integer.valueOf(7).equals(i.getStatus())).collect(Collectors.summingDouble(i -> i.getAmount())));
|
||||
// data.setTotalRefund(list.stream().filter(i -> Integer.valueOf(-1).equals(i.getStatus())).collect(Collectors.summingDouble(i -> i.getAmount())));
|
||||
// }
|
||||
// return new Result<HomeData4>().success(data);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Result<List<HomeData5>> homeData5(HomeDataRequest hd) {
|
||||
// Integer id = RedisPermissionUtils.getUserPkId();
|
||||
// String key = HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.IndexConstant.HOME_DATA_5+":"+id;
|
||||
// List<HomeData5> list = Collections.emptyList();
|
||||
// if(!redisUtil.hasKey(key)){
|
||||
// Date d = new Date();
|
||||
// list = orderDao.homeFindHalfYearOrderData(new HomeRequestDto(DateUtil.offsetMonth(d, -6), d)).stream().map(data->{
|
||||
// HomeData5 homeData5 = new HomeData5();
|
||||
// BeanUtils.copyProperties(data, homeData5);
|
||||
// homeData5.setTotalMoney(new BigDecimal(data.getTotalMoney()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
||||
// return homeData5;
|
||||
// }).sorted((o1,o2) ->{
|
||||
// return o1.getMonth().compareTo(o2.getMonth());
|
||||
// }).collect(Collectors.toList());
|
||||
// redisUtil.set(key, JSONUtil.toJsonStr(list));
|
||||
// }else{
|
||||
// list = JSONUtil.toList(redisUtil.getStringValue(key), HomeData5.class);
|
||||
// }
|
||||
// // 1. 找出6个月\
|
||||
// Date d = new Date();
|
||||
// return new Result<List<HomeData5>>().success(list);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Result<List<HomeData6>> homeData6(HomeDataRequest hd) {
|
||||
// Integer id = RedisPermissionUtils.getUserPkId();
|
||||
// String key = HDConstant.LOGIN_CACHE_KEY_PREFIX + HDConstant.IndexConstant.HOME_DATA_6+":"+id;
|
||||
// List<HomeData6> list = Collections.emptyList();
|
||||
// if(!redisUtil.hasKey(key)){
|
||||
// Date d = new Date();
|
||||
// Map<String, List<HomeOrderSwapBatteryHalfYearAmountDto>> mapList= orderDao.homeFindHalfYearAmountData(new HomeRequestDto(DateUtil.offsetMonth(d, -6), d)).stream().collect(Collectors.groupingBy(HomeOrderSwapBatteryHalfYearAmountDto::getMonth));
|
||||
// Iterator<String> it = mapList.keySet().iterator();
|
||||
// while (it.hasNext()){
|
||||
// String month = it.next();
|
||||
// HomeData6 homeData6 = new HomeData6();
|
||||
// homeData6.setMonth(month);
|
||||
//// List<HomeOrderSwapBatteryHalfYearAmountDto> values = mapList.get(month);
|
||||
//// HomeOrderSwapBatteryHalfYearAmountDto wechat = values.stream().filter(f -> Integer.valueOf(7).equals(f.getStatus()) && Integer.valueOf(2).equals(f.getPayType())).findFirst().orElse(null);
|
||||
//// if(ObjectUtils.isNotEmpty(wechat)){
|
||||
//// homeData6.setInQuantity(wechat.getQuantity());
|
||||
//// homeData6.setInMoney(wechat.getTotalMoney());
|
||||
//// }
|
||||
////
|
||||
//// HomeOrderSwapBatteryHalfYearAmountDto account = values.stream().filter(f -> Integer.valueOf(7).equals(f.getStatus()) && Integer.valueOf(1).equals(f.getPayType())).findFirst().orElse(null);
|
||||
//// if(ObjectUtils.isNotEmpty(account)){
|
||||
//// homeData6.setWalletQuantity(account.getQuantity());
|
||||
//// homeData6.setWalletMoney(account.getTotalMoney());
|
||||
//// }
|
||||
////
|
||||
//// List<HomeOrderSwapBatteryHalfYearAmountDto> refund = values.stream().filter(f -> Integer.valueOf(-1).equals(f.getStatus())).collect(Collectors.toList());
|
||||
//// if(Collections.isNotEmpty(refund)){
|
||||
//// homeData6.setRefundQuantity(refund.stream().collect(Collectors.summingLong(i -> i.getQuantity())));
|
||||
//// homeData6.setRefundMoney(refund.stream().collect(Collectors.summingDouble(i -> i.getTotalMoney())));
|
||||
//// }
|
||||
// list.add(homeData6);
|
||||
// }
|
||||
// list = list.stream().sorted((o1,o2) ->{
|
||||
// return o1.getMonth().compareTo(o2.getMonth());
|
||||
// }).collect(Collectors.toList());
|
||||
// redisUtil.set(key, JSONUtil.toJsonStr(list));
|
||||
// }else{
|
||||
// list = JSONUtil.toList(redisUtil.getStringValue(key), HomeData6.class);
|
||||
// }
|
||||
// return new Result<List<HomeData6>>().success(list);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Result<HomeData7> homeData7(Integer type) {
|
||||
// HomeData7 data = new HomeData7();
|
||||
// Date d = new Date();
|
||||
// // 按月
|
||||
// Date month = DateUtil.beginOfMonth(d);
|
||||
// Date beforeMonth = DateUtil.offsetMonth(month, -1);
|
||||
// Date beforeYearMonth = DateUtil.offsetYear(d, -1);
|
||||
// data.setMonth(DateUtil.format(month, "yyyy-MM"));
|
||||
// //订单数量
|
||||
// data.setQuantity(orderDao.homeFindOrderCountData(month));
|
||||
// data.setTradeAmount(orderDao.homeFindOrderAmountData(month));
|
||||
// //环比
|
||||
// data.setLastMonthQuantity(orderDao.homeFindOrderCountData(beforeMonth));
|
||||
// data.setLastMonthTradeAmount(orderDao.homeFindOrderAmountData(beforeMonth));
|
||||
// //同比
|
||||
// data.setLastYearQuantity(orderDao.homeFindOrderCountData(beforeYearMonth));
|
||||
// data.setLastYearTradeAmount(orderDao.homeFindOrderAmountData(beforeYearMonth));
|
||||
// return new Result<HomeData7>().success(data);
|
||||
// }
|
||||
|
||||
@Override
|
||||
public Result<HomeData7> homeData7(Integer type) {
|
||||
HomeData7 data = new HomeData7();
|
||||
Date d = new Date();
|
||||
// 按月
|
||||
Date month = DateUtil.beginOfMonth(d);
|
||||
Date beforeMonth = DateUtil.offsetMonth(month, -1);
|
||||
Date beforeYearMonth = DateUtil.offsetYear(d, -1);
|
||||
data.setMonth(DateUtil.format(month, "yyyy-MM"));
|
||||
//订单数量
|
||||
data.setQuantity(orderSwapBatteryDao.homeFindOrderCountData(month));
|
||||
data.setTradeAmount(orderSwapBatteryDao.homeFindOrderAmountData(month));
|
||||
//环比
|
||||
data.setLastMonthQuantity(orderSwapBatteryDao.homeFindOrderCountData(beforeMonth));
|
||||
data.setLastMonthTradeAmount(orderSwapBatteryDao.homeFindOrderAmountData(beforeMonth));
|
||||
//同比
|
||||
data.setLastYearQuantity(orderSwapBatteryDao.homeFindOrderCountData(beforeYearMonth));
|
||||
data.setLastYearTradeAmount(orderSwapBatteryDao.homeFindOrderAmountData(beforeYearMonth));
|
||||
return new Result<HomeData7>().success(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loginData() {
|
||||
HomeDataRequest hd = new HomeDataRequest();
|
||||
homeData5(hd);
|
||||
homeData6(hd);
|
||||
}
|
||||
// @Override
|
||||
// public void loginData() {
|
||||
// HomeDataRequest hd = new HomeDataRequest();
|
||||
// homeData5(hd);
|
||||
// homeData6(hd);
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@ -1,21 +1,23 @@
|
||||
package com.evotech.hd.cloud.service.impl;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.evotech.hd.cloud.dao.MessageMqttDao;
|
||||
import com.evotech.hd.cloud.entity.MessageMqtt;
|
||||
import com.evotech.hd.cloud.entity.request.PageListMessageMqttRequest;
|
||||
import com.evotech.hd.cloud.entity.vo.MqttMessageParam;
|
||||
import com.evotech.hd.cloud.service.MessageMqttService;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
import com.evotech.hd.common.core.enums.CodeMsg;
|
||||
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Service
|
||||
@ -56,4 +58,16 @@ public class MessageMqttServiceImpl implements MessageMqttService {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessageMqtt getOne(MqttMessageParam param) {
|
||||
List<MessageMqtt> list = messageMqttDao.selectList(new LambdaQueryWrapper<MessageMqtt>()
|
||||
.eq(MessageMqtt::getStationCode, param.getStationCode())
|
||||
.eq(MessageMqtt::getDirection, param.getDirection())
|
||||
.eq(MessageMqtt::getType, param.getType())
|
||||
.apply(" DATE_FORMAT(ctime,'%Y-%m-%d') ={0}", DateFormatUtils.format(param.getCtime(), "yyyy-MM-dd"))
|
||||
.apply(" content->'$.dataBody.orderNo'={1}", param.getOrderNo())
|
||||
.eq(MessageMqtt::getMessageFunction, param.getMessageFunction()).orderByDesc(MessageMqtt::getCtime));
|
||||
return (Collections.isNotEmpty(list) ? list.get(0) : null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,125 @@
|
||||
package com.evotech.hd.cloud.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.evotech.hd.cloud.dao.OrderDao;
|
||||
import com.evotech.hd.cloud.dao.OrderDetailDao;
|
||||
import com.evotech.hd.cloud.entity.order.Order;
|
||||
import com.evotech.hd.cloud.entity.order.OrderDetail;
|
||||
import com.evotech.hd.cloud.service.OrderService;
|
||||
import com.evotech.hd.cloud.utils.components.SwapOrderBasicFeeComponent;
|
||||
import com.evotech.hd.common.core.Dto.Result;
|
||||
import com.evotech.hd.common.core.Dto.order.OrderListVo;
|
||||
import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest;
|
||||
import com.evotech.hd.common.core.enums.OrderStatusEnums;
|
||||
import com.evotech.hd.common.web.util.EnumUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Date;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* 订单的业务实现类
|
||||
*
|
||||
* @ClassName:OrderServiceImpl
|
||||
* @date: 2025年05月16日 13:58
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
|
||||
@Service
|
||||
public class OrderServiceImpl extends BaseServiceImpl<OrderDao, Order, OrderListVo> implements OrderService {
|
||||
@Resource
|
||||
private OrderDetailDao orderDetailDao;
|
||||
@Resource
|
||||
private SwapOrderBasicFeeComponent orderBasicFeeComponent;
|
||||
|
||||
@Override
|
||||
public Result<Page<OrderListVo>> pageList(PageListSwapOrderRequest plsor) {
|
||||
|
||||
return new Result<Page<OrderListVo>>().success(selectPage(new Page<Order>(plsor.getPageNo(), plsor.getPageSize()), new LambdaQueryWrapper<Order>()
|
||||
.eq(StringUtils.isNotEmpty(plsor.getOrderNo()), Order::getOrderNo, plsor.getOrderNo())
|
||||
.eq(StringUtils.isNotEmpty(plsor.getPlateNum()), Order::getPlateNum, plsor.getPlateNum())
|
||||
.ge(ObjectUtils.isNotEmpty(plsor.getOrderTimeBegin()), Order::getOrderTime, plsor.getOrderTimeBegin())
|
||||
.le(ObjectUtils.isNotEmpty(plsor.getOrderTimeEnd()), Order::getOrderTime, plsor.getOrderTimeEnd())
|
||||
.eq(StringUtils.isNotEmpty(plsor.getStationCode()), Order::getStationCode, plsor.getStationCode())
|
||||
.eq(StringUtils.isNotEmpty(plsor.getTradeNo()), Order::getNotifyOrderNo, plsor.getTradeNo())
|
||||
.ne(Order::getDelFlag, 1)
|
||||
.orderByDesc(Order::getOrderTime), new Function<Order, OrderListVo>() {
|
||||
@Override
|
||||
public OrderListVo apply(Order order) {
|
||||
OrderListVo vo = new OrderListVo();
|
||||
BeanUtils.copyProperties(order, vo);
|
||||
return vo;
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<String> calculateCost(Order order) {
|
||||
//查询详情数据, 检查详情相关数据是否存在
|
||||
OrderDetail orderDetail = orderDetailDao.selectOne(new LambdaQueryWrapper<OrderDetail>().eq(OrderDetail::getOrderId, order.getPkId()), false);
|
||||
if(ObjectUtils.isEmpty(orderDetail)){
|
||||
return new Result<String>().error("当前订单没有订单详情,无法处理");
|
||||
}
|
||||
// 2. 检查数据
|
||||
if (orderDetail.getServiceFee() == null || orderDetail.getUnitPrice() == null) {
|
||||
orderDetail = orderBasicFeeComponent.orderBasicFee(order, orderDetail);
|
||||
if (orderDetail.getServiceFee() == null || orderDetail.getUnitPrice() == null) {
|
||||
return new Result<String>().error("订单费用标准异常!");
|
||||
}
|
||||
}
|
||||
// 2. 检查消耗量
|
||||
if (orderDetail.getElectricityQuantity() == null) {
|
||||
orderDetail = orderBasicFeeComponent.calculateElectricityQuantity(order, orderDetail);
|
||||
if (orderDetail.getElectricityQuantity() == null) {
|
||||
return new Result<String>().error("订单消费统计信息异常!");
|
||||
}
|
||||
}
|
||||
// 3. 选择费用计算方式 计算费用, 这里计算出来直接就是分
|
||||
BigDecimal orderFee = new BigDecimal(orderDetail.getUnitPrice()).multiply(new BigDecimal(orderDetail.getElectricityQuantity())).setScale(0, RoundingMode.HALF_UP);
|
||||
//订单价格
|
||||
orderDetail.setOrderFee(orderFee.intValue());
|
||||
// 4. 跟新订单
|
||||
order.setOrderAmount(orderFee.add(new BigDecimal(orderDetail.getServiceFee())).intValue());
|
||||
order.setStatus(OrderStatusEnums.TOPAY.getCode());
|
||||
getBaseMapper().updateById(order);
|
||||
//更新订单详情
|
||||
orderDetailDao.updateById(orderDetail);
|
||||
return new Result<String>().success("");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public Result<Boolean> updateStatus(String orderNo, Integer status) {
|
||||
//根据订单编码查询此订单
|
||||
Order order = getBaseMapper().selectOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderNo));
|
||||
if (order == null) {
|
||||
return new Result<Boolean>().error("订单不存在", false);
|
||||
}
|
||||
// 2.如果当前是关闭状态, 检查当前订单是否只是创建状态, 如果不是创建状态, 返回无法关闭
|
||||
if (OrderStatusEnums.CANCLE.getCode().equals(status) && !OrderStatusEnums.CREATE.getCode().equals(order.getStatus())) {
|
||||
return new Result<Boolean>().error("当前状态不允许关闭,订单状态:" + EnumUtils.getEnumPropertyValue(OrderStatusEnums.class, order.getStatus()), false);
|
||||
}
|
||||
order.setStatus(status);
|
||||
order.setUpdateTime(new Date());
|
||||
// 3.更新订单状态
|
||||
if (getBaseMapper().updateById(order) > 0){
|
||||
return new Result<Boolean>().success(true);
|
||||
}else{
|
||||
return new Result<Boolean>().error((OrderStatusEnums.CANCLE.getCode().equals(status) ? "取消订单失败" : "订单状态调整失败"), false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,72 @@
|
||||
package com.evotech.hd.cloud.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.evotech.hd.cloud.dao.BatteryStationDao;
|
||||
import com.evotech.hd.cloud.dao.OrderSwapBatteryPreDao;
|
||||
import com.evotech.hd.cloud.service.OrderSwapBatteryPreService;
|
||||
import com.evotech.hd.common.core.entity.cloud.BatteryStation;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 类
|
||||
*
|
||||
* @ClassName:OrderSwapBatteryreServiceImpl
|
||||
* @date: 2025年05月19日 16:18
|
||||
* @author: andy.shi
|
||||
* @contact: 17330188597
|
||||
* @remark: 开发人员联系方式 1042025947@qq.com/微信同步
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class OrderSwapBatteryPreServiceImpl extends ServiceImpl<OrderSwapBatteryPreDao, OrderSwapBatteryPre> implements OrderSwapBatteryPreService {
|
||||
|
||||
@Resource
|
||||
BatteryStationDao batteryStationDao;
|
||||
|
||||
@Override
|
||||
public Boolean addPreByPlateNum(String plateNum, String stationCode) {
|
||||
BatteryStation batteryStation = batteryStationDao.selectOne(new LambdaQueryWrapper<BatteryStation>().eq(BatteryStation::getCode, stationCode).select(BatteryStation::getCode, BatteryStation::getName), false);
|
||||
// 3. 添加预约
|
||||
Date day = new Date();
|
||||
OrderSwapBatteryPre osbp = new OrderSwapBatteryPre();
|
||||
osbp.setSource(3);
|
||||
osbp.setSourceId(batteryStation.getCode());
|
||||
osbp.setUcode("hp_station_push");
|
||||
osbp.setUname("慧鹏站端推送");
|
||||
osbp.setPhone("12332112345");
|
||||
osbp.setPlateNum(plateNum);
|
||||
osbp.setStationCode(batteryStation.getCode());
|
||||
osbp.setStationName(batteryStation.getName());
|
||||
osbp.setSwapDay(DateUtil.format(day, DatePattern.PURE_DATE_FORMATTER));
|
||||
osbp.setSwapDuration("6:00-20:00");
|
||||
osbp.setStatus(1);
|
||||
osbp.setCtime(osbp.getReservationTime());
|
||||
osbp.setCreater("TEST");
|
||||
osbp.setReservationTime(osbp.getReservationTime() == null ? day : osbp.getReservationTime());
|
||||
osbp.setCtime(day);
|
||||
getBaseMapper().insert(osbp);
|
||||
//特殊渠道反推的数据, 不需要发送通知
|
||||
// if (n == 1) {
|
||||
// // 计算过期时间(预约时间后30分钟)
|
||||
// Date expireTime = DateUtil.offsetMinute(osbp.getReservationTime(), 90);
|
||||
// // 将预约单ID和过期时间存入Redis,设置过期时间为预约时间后30分钟
|
||||
// String redisKey = "preorder:expire:" + osbp.getPkId();
|
||||
// redisUtil.set(redisKey, expireTime);
|
||||
// // 发送服务号消息,没有消息队列,先用接口吧
|
||||
// templateMessageService.preOrderMessageSend(osbp);
|
||||
// return true;
|
||||
// }
|
||||
return true;
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,11 @@
|
||||
package com.evotech.hd.cloud.task;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.evotech.hd.cloud.service.OrderSwapBatteryService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.evotech.hd.cloud.entity.order.Order;
|
||||
import com.evotech.hd.cloud.service.OrderService;
|
||||
import com.evotech.hd.cloud.service.newthread.GZHTemplateMessageService;
|
||||
import com.evotech.hd.common.core.dao.cloud.OrderSwapBatteryDao;
|
||||
import com.evotech.hd.common.core.entity.Result;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
|
||||
import com.evotech.hd.common.core.Dto.Result;
|
||||
import com.evotech.hd.common.core.enums.CodeMsg;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -22,9 +21,7 @@ import java.util.List;
|
||||
public class OrderCostCalculateTask {
|
||||
|
||||
@Resource
|
||||
private OrderSwapBatteryDao orderSwapBatteryDao;
|
||||
@Resource
|
||||
private OrderSwapBatteryService orderSwapBatteryService;
|
||||
private OrderService orderService;
|
||||
@Resource
|
||||
private GZHTemplateMessageService gzhTemplateMessageService;
|
||||
|
||||
@ -37,9 +34,9 @@ public class OrderCostCalculateTask {
|
||||
Boolean flag = true;
|
||||
int n = 0;
|
||||
while (flag) {
|
||||
List<OrderSwapBattery> list = orderSwapBatteryDao.selectList(new QueryWrapper<OrderSwapBattery>()
|
||||
.eq("status", 5).ne("del_flag", 1)
|
||||
.ge("order_time", DateUtil.beginOfYear(new Date()))
|
||||
List<Order> list = orderService.list(new LambdaQueryWrapper<Order>()
|
||||
.eq(Order::getStatus, 5).ne(Order::getDelFlag, 1)
|
||||
.ge(Order::getOrderTime, DateUtil.beginOfYear(new Date()))
|
||||
.last("limit 20"));
|
||||
if (!list.isEmpty()) {
|
||||
n = orderCalculate(n, list);
|
||||
@ -48,16 +45,14 @@ public class OrderCostCalculateTask {
|
||||
flag = false;
|
||||
}
|
||||
}
|
||||
|
||||
log.info("\r\n===>>>订单计算费用完成:{} 条数据", n);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private int orderCalculate(int n, List<OrderSwapBattery> list) {
|
||||
private int orderCalculate(int n, List<Order> list) {
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
Result<String> res = orderSwapBatteryService.calculateCost(list.get(i));
|
||||
Result<String> res = orderService.calculateCost(list.get(i));
|
||||
if ( CodeMsg.SUCCESS.getCode().equals(res.getCode())) {
|
||||
n += 1;
|
||||
// 发送微信消息
|
||||
|
||||
@ -3,18 +3,31 @@ package com.evotech.hd.cloud.utils.components;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.evotech.hd.cloud.dao.BatteryStationHdFeeStandardDao;
|
||||
import com.evotech.hd.cloud.dao.OrderDetailDao;
|
||||
import com.evotech.hd.cloud.entity.MessageMqtt;
|
||||
import com.evotech.hd.cloud.entity.order.Order;
|
||||
import com.evotech.hd.cloud.entity.order.OrderDetail;
|
||||
import com.evotech.hd.cloud.entity.vo.MqttMessageParam;
|
||||
import com.evotech.hd.cloud.mqtt.enums.EventFunctionTypesEnum;
|
||||
import com.evotech.hd.cloud.mqtt.enums.MqttMessageTypeEnum;
|
||||
import com.evotech.hd.cloud.service.MessageMqttService;
|
||||
import com.evotech.hd.common.core.constant.HDConstant;
|
||||
import com.evotech.hd.common.core.entity.IdEntity;
|
||||
import com.evotech.hd.common.core.entity.cloud.BatteryStationHdFeeStandard;
|
||||
import com.evotech.hd.common.core.entity.cloud.BatteryStationHdFeeStandardDetail;
|
||||
import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery;
|
||||
import com.evotech.hd.common.core.utils.Collections;
|
||||
import com.evotech.hd.common.core.utils.CommonUtil;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.time.LocalTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@ -22,6 +35,11 @@ public class SwapOrderBasicFeeComponent {
|
||||
|
||||
@Resource
|
||||
private BatteryStationHdFeeStandardDao batteryStationHdFeeStandardDao;
|
||||
@Resource
|
||||
private OrderDetailDao orderDetailDao;
|
||||
@Resource
|
||||
private MessageMqttService messageMqttService;
|
||||
|
||||
|
||||
/**
|
||||
* 计算订单的基本费用和服务费用
|
||||
@ -30,26 +48,26 @@ public class SwapOrderBasicFeeComponent {
|
||||
* @param osb 订单对象,包含站点代码和订单时间
|
||||
* @return 更新后的订单对象,包含计算后的基本费用和服务费用
|
||||
*/
|
||||
public OrderSwapBattery orderBasicFee(OrderSwapBattery osb) {
|
||||
public OrderDetail orderBasicFee(Order order, OrderDetail orderDetail) {
|
||||
// 根据换电站编码和订单时间查询费用标准列表
|
||||
List<BatteryStationHdFeeStandard> list = batteryStationHdFeeStandardDao.listFeeStandard(osb.getStationCode(), DateUtil.format(osb.getOrderTime(), DatePattern.PURE_DATE_FORMATTER));
|
||||
List<BatteryStationHdFeeStandard> list = batteryStationHdFeeStandardDao.listFeeStandard(order.getStationCode(), DateUtil.format(order.getOrderTime(), DatePattern.PURE_DATE_FORMATTER));
|
||||
if(CollectionUtils.isEmpty(list)){
|
||||
list = batteryStationHdFeeStandardDao.orderCreateBeforeFeeEndStandard(osb.getStationCode(), DateUtil.format(osb.getOrderTime(), DatePattern.PURE_DATE_FORMATTER));
|
||||
list = batteryStationHdFeeStandardDao.orderCreateBeforeFeeEndStandard(order.getStationCode(), DateUtil.format(order.getOrderTime(), DatePattern.PURE_DATE_FORMATTER));
|
||||
}
|
||||
if(CollectionUtils.isEmpty(list)){
|
||||
list = batteryStationHdFeeStandardDao.orderCreateAfterFeeBeginStandard(osb.getStationCode(), DateUtil.format(osb.getOrderTime(), DatePattern.PURE_DATE_FORMATTER));
|
||||
list = batteryStationHdFeeStandardDao.orderCreateAfterFeeBeginStandard(order.getStationCode(), DateUtil.format(order.getOrderTime(), DatePattern.PURE_DATE_FORMATTER));
|
||||
}
|
||||
|
||||
|
||||
log.info("换电站编码{}时间{}订单费用计算参数========>:{}, 费用标准信息:{}", DateUtil.format(osb.getOrderTime(), DatePattern.PURE_DATE_FORMATTER),osb.getStationCode(),JSONUtil.toJsonStr(osb),JSONUtil.toJsonStr(list));
|
||||
log.info("换电站编码{}时间{}订单费用计算参数========>:{}, 费用标准信息:{}", DateUtil.format(order.getOrderTime(), DatePattern.PURE_DATE_FORMATTER),order.getStationCode(),JSONUtil.toJsonStr(order),JSONUtil.toJsonStr(list));
|
||||
// 如果费用标准列表不为空,说明找到了相关的费用标准
|
||||
if (!list.isEmpty()) {
|
||||
// 获取第一个费用标准
|
||||
BatteryStationHdFeeStandard standard = list.get(0);
|
||||
Integer serviceFee = CommonUtil.yuanToFen(standard.getServiceFee()).intValue();
|
||||
Integer unitPrice = getUnitFee(orderDetail.getFeeType(), standard);
|
||||
String feeStandard = JSONUtil.toJsonStr(standard);
|
||||
// 获取该标准下的详细费用列表
|
||||
List<BatteryStationHdFeeStandardDetail> detailList = standard.getDetailList();
|
||||
List<BatteryStationHdFeeStandard> battery = new ArrayList<>();
|
||||
battery.add(standard);
|
||||
// 如果详细费用列表不为空,进行时间范围过滤
|
||||
if (!detailList.isEmpty()) {
|
||||
// 过滤出当前时间在有效时间范围内的费用详情
|
||||
@ -58,28 +76,124 @@ public class SwapOrderBasicFeeComponent {
|
||||
// 如果过滤后的详细费用列表不为空,使用第一个有效的费用详情
|
||||
if (!detailList.isEmpty()) {
|
||||
BatteryStationHdFeeStandardDetail detail = detailList.get(0);
|
||||
log.info("当前时间在费用详情有效时间范围内=====>:{}", JSONUtil.toJsonStr(detail));
|
||||
// 设置基本费用和服务费用
|
||||
osb.setFeeStandardJson(JSONUtil.toJsonStr(detail));
|
||||
osb.setBasicFee(detail.getEachSocFee());
|
||||
osb.setServiceFee(detail.getTimeServiceFee());
|
||||
} else {
|
||||
// 如果没有有效的详细费用,使用标准费用
|
||||
osb.setFeeStandardJson(JSONUtil.toJsonStr(standard));
|
||||
osb.setBasicFee(standard.getEachSocFee());
|
||||
osb.setServiceFee(standard.getCommonRemainFee());
|
||||
serviceFee = CommonUtil.yuanToFen(detail.getServiceFee()).intValue();
|
||||
unitPrice = getUnitFee(orderDetail.getFeeType(), detail);
|
||||
feeStandard = JSONUtil.toJsonStr(detail);
|
||||
}
|
||||
}
|
||||
try {
|
||||
orderDetail.setServiceFee(serviceFee);
|
||||
orderDetail.setUnitPrice(unitPrice);
|
||||
orderDetail.setFeeStandard(feeStandard);
|
||||
//直接更新数据
|
||||
orderDetailDao.updateById(orderDetail);
|
||||
} catch (Exception e) {
|
||||
log.error("更新费用信息出现错误"+e.getMessage());
|
||||
}
|
||||
}
|
||||
log.info("订单费用计算结果========>:{}", JSONUtil.toJsonStr(orderDetail));
|
||||
return orderDetail;
|
||||
}
|
||||
|
||||
|
||||
public OrderDetail calculateElectricityQuantity(Order order, OrderDetail orderDetail) {
|
||||
Double electricityQuantity = 200d;
|
||||
switch (orderDetail.getFeeType()){
|
||||
case HDConstant.OrderConstant.FEE_TYPE_ODO:
|
||||
break;
|
||||
case HDConstant.OrderConstant.FEE_TYPE_SOC:
|
||||
//如果租借/归还soc不存在参数, 则需要到mqtt消息中去抓取消息进行反向解析
|
||||
if(orderDetail.getRentBatSOC() == null || orderDetail.getRentBatSOC() == null){
|
||||
Map<String, Object> valMap = getMqttValue(MqttMessageTypeEnum.EVENT, EventFunctionTypesEnum.FUN_ORDEREVENT.getFunction(), order, "rentBatSoc", "returnBatSoc");
|
||||
if(orderDetail.getRentBatSOC() == null && valMap.containsKey("rentBatSoc") && ObjectUtils.isNotEmpty(valMap.get("rentBatSoc"))){
|
||||
orderDetail.setRentBatSOC(Double.valueOf(String.valueOf(valMap.get("rentBatSoc"))));
|
||||
}
|
||||
if(orderDetail.getRentBatSOC() == null && valMap.containsKey("returnBatSoc") && ObjectUtils.isNotEmpty(valMap.get("returnBatSoc"))){
|
||||
orderDetail.setReturnBatSOC(Double.valueOf(String.valueOf(valMap.get("returnBatSoc"))));
|
||||
}
|
||||
}
|
||||
electricityQuantity = orderDetail.getRentBatSOC() - orderDetail.getReturnBatSOC();
|
||||
break;
|
||||
case HDConstant.OrderConstant.FEE_TYPE_DL:
|
||||
//如果按照电量结算不存在参数, 则需要到mqtt消息中去抓取消息进行反向解析
|
||||
if(orderDetail.getElectEnd() == null || orderDetail.getElectStart() == null){
|
||||
Map<String, Object> valMap = getMqttValue(MqttMessageTypeEnum.EVENT, "chargingEvent", order, "electStart", "electEnd");
|
||||
if(orderDetail.getRentBatSOC() == null && valMap.containsKey("electStart") && ObjectUtils.isNotEmpty(valMap.get("electStart"))){
|
||||
orderDetail.setElectStart(Double.valueOf(String.valueOf(valMap.get("electStart"))));
|
||||
}
|
||||
if(orderDetail.getRentBatSOC() == null && valMap.containsKey("electEnd") && ObjectUtils.isNotEmpty(valMap.get("electEnd"))){
|
||||
orderDetail.setElectEnd(Double.valueOf(String.valueOf(valMap.get("electEnd"))));
|
||||
}
|
||||
}
|
||||
electricityQuantity = orderDetail.getElectEnd() - orderDetail.getElectStart();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
try {
|
||||
orderDetail.setElectricityQuantity(electricityQuantity);
|
||||
//直接更新数据
|
||||
orderDetailDao.updateById(orderDetail);
|
||||
} catch (Exception e) {
|
||||
log.error("更新消费统计信息出现错误"+e.getMessage());
|
||||
}
|
||||
return orderDetail;
|
||||
}
|
||||
|
||||
public <T extends IdEntity> Integer getUnitFee(Integer feeType, T c) {
|
||||
switch (feeType){
|
||||
case HDConstant.OrderConstant.FEE_TYPE_ODO:
|
||||
if(c instanceof BatteryStationHdFeeStandard){
|
||||
//元转分
|
||||
return CommonUtil.yuanToFen(((BatteryStationHdFeeStandard)c).getEachKmFee()).intValue();
|
||||
}
|
||||
if(c instanceof BatteryStationHdFeeStandardDetail){
|
||||
//元转分
|
||||
return CommonUtil.yuanToFen(((BatteryStationHdFeeStandardDetail)c).getEachKmFee()).intValue();
|
||||
}
|
||||
case HDConstant.OrderConstant.FEE_TYPE_SOC:
|
||||
if(c instanceof BatteryStationHdFeeStandard){
|
||||
//元转分
|
||||
return CommonUtil.yuanToFen(((BatteryStationHdFeeStandard)c).getEachSocFee()).intValue();
|
||||
}
|
||||
if(c instanceof BatteryStationHdFeeStandardDetail){
|
||||
//元转分
|
||||
return CommonUtil.yuanToFen(((BatteryStationHdFeeStandardDetail)c).getEachSocFee()).intValue();
|
||||
}
|
||||
case HDConstant.OrderConstant.FEE_TYPE_DL:
|
||||
if(c instanceof BatteryStationHdFeeStandard){
|
||||
//元转分
|
||||
return CommonUtil.yuanToFen(((BatteryStationHdFeeStandard)c).getEachKwhFee()).intValue();
|
||||
}
|
||||
if(c instanceof BatteryStationHdFeeStandardDetail){
|
||||
//元转分
|
||||
return CommonUtil.yuanToFen(((BatteryStationHdFeeStandardDetail)c).getEachKwhFee()).intValue();
|
||||
}
|
||||
default:
|
||||
//默认返回每次2元
|
||||
return 200;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private Map<String, Object> getMqttValue(MqttMessageTypeEnum typeEnum, String messageFunction, Order order,String... orgs){
|
||||
Map<String, Object> valMap = Collections.emptyMap();
|
||||
MessageMqtt mqtt = messageMqttService.getOne(new MqttMessageParam(order.getOrderNo(), order.getStationCode(), "S2M", typeEnum.getType(), messageFunction, order.getOrderTime()));
|
||||
if(mqtt != null){
|
||||
if(org.apache.commons.lang3.StringUtils.isNotEmpty(mqtt.getContent())){
|
||||
JSONObject content = JSONObject.parseObject(mqtt.getContent());
|
||||
JSONObject dataBody = content.getJSONObject("dataBody");
|
||||
if(dataBody != null){
|
||||
JSONObject statusData = dataBody.getJSONObject("statusData");
|
||||
if(statusData != null){
|
||||
for (int i = 0; i < orgs.length; i++) {
|
||||
String key = orgs[i];
|
||||
valMap.put(key, statusData.get(key));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
osb.setFeeStandardJson(JSONUtil.toJsonStr(standard));
|
||||
// 如果没有详细费用,直接使用标准费用
|
||||
log.info("没有详细费用,直接使用标准费用=====>:{}", JSONUtil.toJsonStr(standard));
|
||||
osb.setBasicFee(standard.getEachSocFee());
|
||||
osb.setServiceFee(standard.getCommonRemainFee());
|
||||
}
|
||||
}
|
||||
// 返回更新后的订单对象
|
||||
log.info("订单费用计算结果========>:{}", JSONUtil.toJsonStr(osb));
|
||||
return osb;
|
||||
return valMap;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
156
cloud-manage-server/src/main/resources/mapper/OrderMapper.xml
Normal file
156
cloud-manage-server/src/main/resources/mapper/OrderMapper.xml
Normal file
@ -0,0 +1,156 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.evotech.hd.cloud.dao.OrderDao">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="homeProportionResultMap" type="com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryProportionDto">
|
||||
<result column="name" property="stationName" />
|
||||
<result column="code" property="stationCode" />
|
||||
<result column="quantity" property="quantity" />
|
||||
<result column="totalAmount" property="totalAmount" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="homeAmountResultMap" type="com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryAmountDto">
|
||||
<result column="amount" property="amount" />
|
||||
<result column="dataCount" property="dataCount" />
|
||||
<result column="status" property="status" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="homeHalfYearResultMap" type="com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryHalfYearDto">
|
||||
<result column="y_m" property="month" />
|
||||
<result column="quantity" property="quantity" />
|
||||
<result column="totalMoney" property="totalMoney" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="homeHalfYearAmountResultMap" type="com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryHalfYearAmountDto">
|
||||
<result column="y_m" property="month" />
|
||||
<result column="quantity" property="quantity" />
|
||||
<result column="totalMoney" property="totalMoney" />
|
||||
<result column="status" property="status" />
|
||||
<result column="payType" property="payType" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="findOrderListByStatusMap" type="com.evotech.hd.common.core.Dto.home.HomeOrderInfo">
|
||||
<result column="order_time" property="swapTime" />
|
||||
<result column="plate_num" property="swapCar" />
|
||||
<result column="order_pre_uname" property="swapUserName" />
|
||||
<result column="amount" property="swapAmount" />
|
||||
</resultMap>
|
||||
|
||||
|
||||
|
||||
<select id="findOrderListByStatus" resultMap="findOrderListByStatusMap">
|
||||
select order_time,
|
||||
plate_num,
|
||||
order_pre_uname,
|
||||
amount
|
||||
from hd_cloud_manage.yt_t_order_swap_battery osb
|
||||
where del_Flag = 0
|
||||
<if test="status!= null">
|
||||
and status !=#{status}
|
||||
</if>
|
||||
order by order_time desc
|
||||
</select>
|
||||
|
||||
<select id="homeFindProportionData" resultMap="homeProportionResultMap">
|
||||
select ifnull(count(osb.pk_id),0) as quantity,
|
||||
bs.code,
|
||||
bs.name
|
||||
from hd_cloud_manage.yt_t_battery_station bs
|
||||
left join hd_cloud_manage.yt_t_order_swap_battery osb on bs.code = osb.station_code
|
||||
where DATE_FORMAT(osb.order_time,"%Y-%m-%d") >= DATE_FORMAT(#{params.begin},"%Y-%m-%d")
|
||||
and DATE_FORMAT(#{params.end},"%Y-%m-%d") >= DATE_FORMAT(osb.order_time,"%Y-%m-%d")
|
||||
GROUP by bs.code,bs.name
|
||||
</select>
|
||||
|
||||
<select id="homeFindAmountData" resultMap="homeAmountResultMap">
|
||||
-- select osb.amount,
|
||||
-- osb.status
|
||||
select ifnull(sum(osb.amount),0) amount,ifnull(count(osb.pk_id),0) as dataCount,
|
||||
osb.status
|
||||
from hd_cloud_manage.yt_t_order_swap_battery osb
|
||||
where DATE_FORMAT(osb.order_time,"%Y-%m-%d") >= DATE_FORMAT(#{params.begin},"%Y-%m-%d")
|
||||
and DATE_FORMAT(#{params.end},"%Y-%m-%d") >= DATE_FORMAT(osb.order_time,"%Y-%m-%d")
|
||||
and osb.amount is not null
|
||||
GROUP by osb.status
|
||||
</select>
|
||||
|
||||
<select id="homeFindHalfYearOrderData" resultMap="homeHalfYearResultMap">
|
||||
select
|
||||
DATE_FORMAT(osb.order_time,"%Y-%m") as y_m,
|
||||
count(osb.pk_id) as quantity,
|
||||
sum(osb.amount) as totalMoney
|
||||
from hd_cloud_manage.yt_t_order_swap_battery osb
|
||||
where DATE_FORMAT(osb.order_time,"%Y-%m-%d") >= DATE_FORMAT(#{params.begin},"%Y-%m-%d")
|
||||
and DATE_FORMAT(#{params.end},"%Y-%m-%d") >= DATE_FORMAT(osb.order_time,"%Y-%m-%d")
|
||||
and osb.amount is not null
|
||||
and osb.status=7
|
||||
GROUP by y_m
|
||||
</select>
|
||||
|
||||
<select id="homeFindHalfYearAmountData" resultMap="homeHalfYearAmountResultMap">
|
||||
select
|
||||
DATE_FORMAT(osb.order_time,"%Y-%m") as y_m,
|
||||
ifnull(count(osb.pk_id), 0) as quantity,
|
||||
sum(ifnull(osb.amount,0)) as totalMoney
|
||||
from
|
||||
hd_cloud_manage.yt_t_order_swap_battery osb
|
||||
where DATE_FORMAT(osb.order_time,"%Y-%m") >= DATE_FORMAT(#{params.begin},"%Y-%m")
|
||||
and DATE_FORMAT(#{params.end},"%Y-%m") >= DATE_FORMAT(osb.order_time,"%Y-%m")
|
||||
and osb.amount is not null
|
||||
and osb.status = 7
|
||||
GROUP by y_m
|
||||
</select>
|
||||
<select id="homeFindHalfYearStationAmountData" resultMap="homeHalfYearAmountResultMap">
|
||||
select
|
||||
DATE_FORMAT(osb.order_time,"%Y-%m") as y_m,
|
||||
ifnull(count(osb.pk_id), 0) as quantity
|
||||
from
|
||||
hd_cloud_manage.yt_t_order_swap_battery osb
|
||||
where DATE_FORMAT(osb.order_time,"%Y-%m") >= DATE_FORMAT(#{params.begin},"%Y-%m")
|
||||
and DATE_FORMAT(#{params.end},"%Y-%m") >= DATE_FORMAT(osb.order_time,"%Y-%m")
|
||||
and osb.amount is not null
|
||||
and osb.status = 7
|
||||
GROUP by y_m
|
||||
</select>
|
||||
|
||||
<!--<select id="homeFindHalfYearAmountData" resultMap="homeHalfYearAmountResultMap">
|
||||
select
|
||||
DATE_FORMAT(osb.order_time,"%Y-%m") as y_m,
|
||||
ifnull(count(osb.pk_id), 0) as quantity,
|
||||
sum(ifnull(osb.amount,0)) as totalMoney,
|
||||
osb.status as status,
|
||||
td.pay_type as payType
|
||||
from
|
||||
hd_cloud_manage.yt_t_order_swap_battery osb
|
||||
left join
|
||||
hd_cloud_manage.yt_t_trade_detail td on td.order_no=osb.order_no
|
||||
where DATE_FORMAT(osb.order_time,"%Y-%m-%d") >= DATE_FORMAT(#{params.begin},"%Y-%m-%d")
|
||||
and DATE_FORMAT(#{params.end},"%Y-%m-%d") >= DATE_FORMAT(osb.order_time,"%Y-%m-%d")
|
||||
and osb.amount is not null
|
||||
and td.pay_type IS not null
|
||||
and osb.status in (-1,7)
|
||||
GROUP by y_m,osb.status,td.pay_type
|
||||
</select>-->
|
||||
|
||||
|
||||
<select id="homeFindOrderCountData" resultType="java.lang.Long" >
|
||||
select count(osb.pk_id)
|
||||
from hd_cloud_manage.yt_t_order_swap_battery osb
|
||||
where DATE_FORMAT(osb.order_time,"%Y-%m") = DATE_FORMAT(#{date},"%Y-%m")
|
||||
and osb.amount is not null
|
||||
and osb.status=7
|
||||
</select>
|
||||
|
||||
<select id="homeFindOrderAmountData" resultType="java.lang.Double" >
|
||||
select sum(osb.amount)
|
||||
from hd_cloud_manage.yt_t_order_swap_battery osb
|
||||
where DATE_FORMAT(osb.order_time,"%Y-%m") = DATE_FORMAT(#{date},"%Y-%m")
|
||||
and osb.amount is not null
|
||||
and osb.status=7
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
@ -3,26 +3,26 @@
|
||||
<mapper namespace="com.evotech.hd.common.core.dao.cloud.OrderSwapBatteryDao">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="homeProportionResultMap" type="com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryProportionDto">
|
||||
<resultMap id="homeProportionResultMap" type="com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryProportionDto">
|
||||
<result column="name" property="stationName" />
|
||||
<result column="code" property="stationCode" />
|
||||
<result column="quantity" property="quantity" />
|
||||
<result column="totalAmount" property="totalAmount" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="homeAmountResultMap" type="com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryAmountDto">
|
||||
<resultMap id="homeAmountResultMap" type="com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryAmountDto">
|
||||
<result column="amount" property="amount" />
|
||||
<result column="dataCount" property="dataCount" />
|
||||
<result column="status" property="status" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="homeHalfYearResultMap" type="com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryHalfYearDto">
|
||||
<resultMap id="homeHalfYearResultMap" type="com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryHalfYearDto">
|
||||
<result column="y_m" property="month" />
|
||||
<result column="quantity" property="quantity" />
|
||||
<result column="totalMoney" property="totalMoney" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="homeHalfYearAmountResultMap" type="com.evotech.hd.common.core.Dto.result.home.HomeOrderSwapBatteryHalfYearAmountDto">
|
||||
<resultMap id="homeHalfYearAmountResultMap" type="com.evotech.hd.common.core.Dto.home.HomeOrderSwapBatteryHalfYearAmountDto">
|
||||
<result column="y_m" property="month" />
|
||||
<result column="quantity" property="quantity" />
|
||||
<result column="totalMoney" property="totalMoney" />
|
||||
@ -30,7 +30,7 @@
|
||||
<result column="payType" property="payType" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="findOrderListByStatusMap" type="com.evotech.hd.common.core.Dto.result.home.HomeOrderInfo">
|
||||
<resultMap id="findOrderListByStatusMap" type="com.evotech.hd.common.core.Dto.home.HomeOrderInfo">
|
||||
<result column="order_time" property="swapTime" />
|
||||
<result column="plate_num" property="swapCar" />
|
||||
<result column="order_pre_uname" property="swapUserName" />
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user