From bf1b6f70495a66a08bfe90ac7065fe3fe2998bfa Mon Sep 17 00:00:00 2001 From: yuyang Date: Mon, 8 Aug 2022 09:47:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A1=A9=E5=81=9C=E7=94=A8?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E8=AF=AD,=E6=B5=81=E9=87=8F=E6=96=B9?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E7=94=B5=E8=B4=B9=E4=BD=BF=E7=94=A8=E5=9C=BA?= =?UTF-8?q?=E7=AB=99=E7=94=B5=E8=B4=B9,=E4=BF=AE=E6=94=B9=E6=A1=A9?= =?UTF-8?q?=E5=81=9C=E7=94=A8,=E6=9E=AA=E4=B9=9F=E5=81=9C=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../XhpcWorkHistoryOrderController.java | 101 ++++++ .../activity/domain/XhpcWorkHistoryOrder.java | 313 ++++++++++++++++ .../mapper/XhpcWorkHistoryOrderMapper.java | 15 + .../service/XhpcWorkHistoryOrderService.java | 17 + .../impl/XhpcWorkHistoryOrderServiceImpl.java | 154 ++++++++ .../mapper/XhpcWorkHistoryOrderMapper.xml | 186 ++++++++++ .../com/xhpc/common/enums/StopReasonEnum.java | 93 +++++ .../order/dto/XhpcWorkHistoryOrderDto.java | 313 ++++++++++++++++ .../order/mapper/XhpcHistoryOrderMapper.java | 3 + .../service/IXhpcHistoryOrderService.java | 3 + .../impl/XhpcHistoryOrderServiceImpl.java | 6 + .../impl/XhpcRealTimeOrderServiceImpl.java | 16 +- .../mapper/XhpcHistoryOrderMapper.xml | 339 ++++++++++++++++++ 13 files changed, 1554 insertions(+), 5 deletions(-) create mode 100644 xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcWorkHistoryOrderController.java create mode 100644 xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/domain/XhpcWorkHistoryOrder.java create mode 100644 xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcWorkHistoryOrderMapper.java create mode 100644 xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/XhpcWorkHistoryOrderService.java create mode 100644 xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcWorkHistoryOrderServiceImpl.java create mode 100644 xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcWorkHistoryOrderMapper.xml create mode 100644 xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/enums/StopReasonEnum.java create mode 100644 xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/dto/XhpcWorkHistoryOrderDto.java diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcWorkHistoryOrderController.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcWorkHistoryOrderController.java new file mode 100644 index 00000000..aceb1eb7 --- /dev/null +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcWorkHistoryOrderController.java @@ -0,0 +1,101 @@ +package com.xhpc.activity.controller; + +import com.xhpc.activity.service.XhpcWorkHistoryOrderService; +import com.xhpc.common.core.web.controller.BaseController; +import com.xhpc.common.core.web.page.TableDataInfo; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author yuyang + * @date 2022/8/5 9:32 + */ +@RestController +@RequestMapping("/workHistoryOrder") +public class XhpcWorkHistoryOrderController extends BaseController { + + @Resource + XhpcWorkHistoryOrderService xhpcWorkHistoryOrderService; + + /** + * 历史订单 + * @return + */ + @GetMapping("/getListPage") + public TableDataInfo getListPage(String tenantId, Long chargingStationId, Long chargingPileId, Long terminalId, String phone, String transactionNumber, String chargingStationName, Long operatorId, Integer source, String beginStartTime, String beginEndTime,Integer type, + String affiliationOrganization, String evcsOrderNo, String plateNum, Integer internetId, String internetSerialNumber, String terminalName, String vinCode, String overStartTime, String overEndTime, Long personnelId, Integer confirmResult,String stopReasonEvcs) + + { + Map params = new HashMap<>(); + params.put("tenantId",tenantId); + params.put("chargingStationId",chargingStationId); + params.put("chargingPileId", chargingPileId); + params.put("terminalId", terminalId); + params.put("phone", phone); + params.put("transactionNumber", transactionNumber); + params.put("chargingStationName", chargingStationName); + params.put("operatorId", operatorId); + params.put("source", source); + params.put("beginStartTime", beginStartTime); + params.put("beginEndTime", beginEndTime); + params.put("type", type); + params.put("affiliationOrganization", affiliationOrganization); + params.put("evcsOrderNo", evcsOrderNo); + params.put("plateNum", plateNum); + params.put("internetId", internetId); + params.put("internetSerialNumber", internetSerialNumber); + params.put("terminalName", terminalName); + params.put("vinCode", vinCode); + params.put("overStartTime", overStartTime); + params.put("overEndTime", overEndTime); + params.put("personnelId", personnelId); + params.put("confirmResult", confirmResult); + params.put("stopReasonEvcs", stopReasonEvcs); + + List> listPage = xhpcWorkHistoryOrderService.getListPage(params); + return getDataTable(listPage); + } + + /** + * 历史订单导出 + * @throws IOException 文件创建异常 + */ + @PostMapping("/export") + public void getExport(HttpServletResponse response,String tenantId, Long chargingStationId, Long chargingPileId, Long terminalId, String phone, String transactionNumber,String chargingStationName, Long operatorId, Integer source, String beginStartTime, String beginEndTime,Integer type, + String affiliationOrganization, String evcsOrderNo, String plateNum, Integer internetId, String internetSerialNumber, String terminalName, String vinCode, String overStartTime, String overEndTime, Long personnelId, Integer confirmResult,String stopReasonEvcs) throws IOException { + Map params = new HashMap<>(); + params.put("tenantId",tenantId); + params.put("chargingStationId",chargingStationId); + params.put("chargingPileId", chargingPileId); + params.put("terminalId", terminalId); + params.put("phone", phone); + params.put("transactionNumber", transactionNumber); + params.put("chargingStationName", chargingStationName); + params.put("operatorId", operatorId); + params.put("source", source); + params.put("beginStartTime", beginStartTime); + params.put("beginEndTime", beginEndTime); + params.put("type", type); + params.put("affiliationOrganization", affiliationOrganization); + params.put("evcsOrderNo", evcsOrderNo); + params.put("plateNum", plateNum); + params.put("internetId", internetId); + params.put("internetSerialNumber", internetSerialNumber); + params.put("terminalName", terminalName); + params.put("vinCode", vinCode); + params.put("overStartTime", overStartTime); + params.put("overEndTime", overEndTime); + params.put("personnelId", personnelId); + params.put("confirmResult", confirmResult); + params.put("stopReasonEvcs", stopReasonEvcs); + xhpcWorkHistoryOrderService.export(response,params); + } + + +} diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/domain/XhpcWorkHistoryOrder.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/domain/XhpcWorkHistoryOrder.java new file mode 100644 index 00000000..fcbcbc9b --- /dev/null +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/domain/XhpcWorkHistoryOrder.java @@ -0,0 +1,313 @@ +package com.xhpc.activity.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author yuyang + * @date 2022/8/5 9:17 + */ +@Data +public class XhpcWorkHistoryOrder implements Serializable { + /** + * 历史订单id + */ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long historyOrderId; + + /** + * 电站id + */ + private Long chargingStationId; + + /** + * 充电订单id + */ + private Long chargeOrderId; + + /** + * 用户id + */ + private Long userId; + + /** + * 终端id + */ + private Long terminalId; + + /** + * 流水号 + */ + private String serialNumber; + + /** + * 互联网订单流水号 + */ + private String internetSerialNumber; + + /** + * Evcs订单号,供监管平台和第三方使用 + */ + private String evcsOrderNo; + + /** + * 订单总价 + */ + private BigDecimal totalPrice; + + /** + * 电站活动抵扣 + */ + private BigDecimal promotionDiscount; + + /** + * 实际价格 + */ + private BigDecimal actPrice; + + /** + * 实收电费 + */ + private BigDecimal actPowerPrice; + + /** + * 实收服务费 + */ + private BigDecimal actServicePrice; + + /** + * 流量方总金额抽成 + */ + private BigDecimal internetCommission; + + /** + * 流量方服务费抽成 + */ + private BigDecimal internetSvcCommission; + /** + * 流量方电量抽成 + */ + private BigDecimal internetDegreeCommission; + + /** + * 平台总金额抽成 + */ + private BigDecimal platformCommission; + + /** + * 平台服务费抽成 + */ + private BigDecimal platformSvcCommisssion; + + /** + * 运维总抽成 + */ + private BigDecimal operationCommission; + + /** + * 运维服务费抽成 + */ + private BigDecimal operationSvcCommission; + + /** + * 开始充电soc + */ + private String startSoc; + + /** + * 结束时soc + */ + private String endSoc; + + /** + * 对账状态(0待确认 1已确认,2待提交,3待审核) + */ + private Integer reconciliationStatus; + + /** + * 清分状态(0待清分 1清分在途,2已提现,3待提交,4待审核) + */ + private Integer sortingStatus; + + /** + * 1 自动结算 2 平台结算 + */ + private Integer type; + + /** + * 状态(0正常 1停用) + */ + private Integer status; + + /** + * 删除标志(0代表存在 2代表删除) + */ + private Integer delFlag; + + /** + * 总电费 + */ + private BigDecimal powerPriceTotal; + + /** + * 总服务费 + */ + private BigDecimal servicePriceTotal; + + /** + * 活动总电费 + */ + private BigDecimal activityPowerPriceTotal; + + /** + * 活动总服务费 + */ + private BigDecimal activityServicePriceTotal; + + /** + * 活动总金额 + */ + private BigDecimal activityTotalPrice; + + /** + * 0未统计 1已统计 + */ + private Integer state; + + /** + * VIN 码 + */ + private String vinNormal; + + /** + * 充电电量 + */ + private Double totalPower; + + private Date startTime; + /** + * 结束时间 + */ + private Date endTime; + + /** + * 停止原因 + */ + private String stopReasonEvcs ; + + + private String stopReasonEvcsName ; + + /** + * 运营商/场站OperatorID + */ + private String operatorIdEvcs; + + /** + * 流量方OperatorID + */ + private String operatorId3rdptyEvcs; + + /** + * 终端客户开启充电方式 + * 0:未知 + * 1:市/省级平台无卡启动 + * 2:有卡启动 + * 3:其他无卡启动 + */ + private Integer chargeModelEvcs; + + /** + * 实际充电的客户在运营商侧的名称,<=20字符 + */ + private String userNameEvcs; + + /** + * 接口额定功率 + * 单位:kW, 小数点后 1 位 + */ + private Double connectorPowerEvcs; + + /** + * 电表总起值 + * 单位:度, 小数点后2位 + */ + private Double meterValueStartEvcs; + + /** + * 电表总结束值 + * 单位:度, 小数点后2位 + */ + private Double meterValueEndEvcs; + + /** + * 充电用户手机号 + */ + private String phone; + + + /** + * 推送第三方订单返回的确认结果 + */ + private Integer confirmResult; + + /** + * 费率模型id + */ + private Long rateModelId; + + /** + * 充电方式 + */ + private String chargingMode; + + /** + * 充电方式 + */ + private Integer source; + + /** + * 活动id + */ + private String activityId; + + /** 搜索值 */ + private String searchValue; + + /** 创建者 */ + private String createBy; + + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** 更新者 */ + private String updateBy; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 备注 + */ + private String remark; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcWorkHistoryOrderMapper.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcWorkHistoryOrderMapper.java new file mode 100644 index 00000000..a8525519 --- /dev/null +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcWorkHistoryOrderMapper.java @@ -0,0 +1,15 @@ +package com.xhpc.activity.mapper; + +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * @author yuyang + * @date 2022/8/5 9:25 + */ +public interface XhpcWorkHistoryOrderMapper { + + List> getListPage(@Param("params")Map params); +} diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/XhpcWorkHistoryOrderService.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/XhpcWorkHistoryOrderService.java new file mode 100644 index 00000000..6f3478a7 --- /dev/null +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/XhpcWorkHistoryOrderService.java @@ -0,0 +1,17 @@ +package com.xhpc.activity.service; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * @author yuyang + * @date 2022/8/5 9:23 + */ +public interface XhpcWorkHistoryOrderService { + + List> getListPage(Map params); + + public void export(HttpServletResponse response, Map params) throws IOException; +} diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcWorkHistoryOrderServiceImpl.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcWorkHistoryOrderServiceImpl.java new file mode 100644 index 00000000..fda653d8 --- /dev/null +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcWorkHistoryOrderServiceImpl.java @@ -0,0 +1,154 @@ +package com.xhpc.activity.service.impl; + + +import cn.hutool.core.io.IoUtil; +import cn.hutool.poi.excel.BigExcelWriter; +import cn.hutool.poi.excel.ExcelUtil; +import com.xhpc.activity.mapper.XhpcWorkHistoryOrderMapper; +import com.xhpc.activity.service.XhpcWorkHistoryOrderService; +import com.xhpc.common.core.utils.SecurityUtils; +import com.xhpc.common.core.web.service.BaseService; +import com.xhpc.common.security.service.TokenService; +import com.xhpc.common.util.UserTypeUtil; +import com.xhpc.system.api.domain.SysUser; +import com.xhpc.system.api.model.LoginUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author yuyang + * @date 2022/8/5 9:23 + */ +@Service +public class XhpcWorkHistoryOrderServiceImpl extends BaseService implements XhpcWorkHistoryOrderService { + + @Resource + XhpcWorkHistoryOrderMapper xhpcWorkHistoryOrderMapper; + @Resource + private TokenService tokenService; + + @Override + public List> getListPage(Map params) { + + + //获取登陆用户 + LoginUser loginUser = tokenService.getLoginUser(); + SysUser sysUser = loginUser.getSysUser(); + Long sysUserId = sysUser.getUserId(); + //params.put("tenantId", loginUser.getTenantId()); + //桩的统计、该时段金额 + if (UserTypeUtil.USER_ID !=sysUserId) { + if (UserTypeUtil.SYS_USER_TYPE_ONE.equals(sysUser.getUserType())) { + params.put("status", 1); + //运营商看自己的场站 + } else { + params.put("status", 2); + //查询赋值的场站 + } + } else { + params.put("status", 0); + } + startPage(); + return xhpcWorkHistoryOrderMapper.getListPage(params); + + } + + @Override + public void export(HttpServletResponse response, Map params) throws IOException { + LoginUser loginUser = tokenService.getLoginUser(); + SysUser sysUser = loginUser.getSysUser(); + Long sysUserId = sysUser.getUserId(); + //params.put("tenantId", loginUser.getTenantId()); + //桩的统计、该时段金额 + if (UserTypeUtil.USER_ID !=sysUserId) { + if (UserTypeUtil.SYS_USER_TYPE_ONE.equals(sysUser.getUserType())) { + Long logOperatorId = sysUser.getOperatorId(); + params.put("status", 1); + //运营商看自己的场站 + } else { + params.put("status", 2); + //查询赋值的场站 + } + } else { + params.put("status", 0); + } + List> list= xhpcWorkHistoryOrderMapper.getListPage(params); + + BigExcelWriter writer = ExcelUtil.getBigWriter("HistoryOrder_" + System.currentTimeMillis() + ".xlsx"); + writer.addHeaderAlias("historyOrderId", "历史订单ID"); + writer.addHeaderAlias("serialNumber", "订单号"); + writer.addHeaderAlias("internetSerialNumber", "流量方订单号"); + writer.addHeaderAlias("chargingStationName", "电站名称"); + writer.addHeaderAlias("pileSerialNumber", "桩编号"); + writer.addHeaderAlias("terminalName", "终端名称"); + writer.addHeaderAlias("operatorId", "运营商ID"); + writer.addHeaderAlias("operatorName", "运营商名称"); + writer.addHeaderAlias("power", "功率"); + writer.addHeaderAlias("type", "桩类型(1直流(慢) 2交流(快)"); + writer.addHeaderAlias("orderType", "状态1 自动结算 2 平台结算"); + writer.addHeaderAlias("startSoc", "开始soc"); + writer.addHeaderAlias("endSoc", "结束soc"); + writer.addHeaderAlias("powerPriceTotal", "总电费"); + writer.addHeaderAlias("servicePriceTotal", "总服务费"); + writer.addHeaderAlias("totalPrice", "订单总价"); + writer.addHeaderAlias("activityPowerPriceTotal", "活动总电费"); + writer.addHeaderAlias("activityServicePriceTotal", "活动总服务费"); + writer.addHeaderAlias("activityTotalPrice", "活动总金额"); + writer.addHeaderAlias("promotionDiscount", "电站活动抵扣总金额"); + writer.addHeaderAlias("actPrice", "实际用户支付金额"); + writer.addHeaderAlias("internetCommission", "流量方总金额抽成"); + writer.addHeaderAlias("internetSvcCommission", "流量方服务费抽成"); + writer.addHeaderAlias("internetDegreeCommission", "流量方电量抽成"); + writer.addHeaderAlias("platformCommission", "平台总金额抽成"); + writer.addHeaderAlias("platformSvcCommisssion", "平台服务费抽成"); + writer.addHeaderAlias("operationCommission", "运维总抽成"); + writer.addHeaderAlias("operationSvcCommission", "运维服务费抽成"); + writer.addHeaderAlias("actPowerPrice", "运营商电费"); + writer.addHeaderAlias("actServicePrice", "运营商服务费"); + writer.addHeaderAlias("actSumPrice", "运营商总金额"); +// writer.addHeaderAlias("internetSerialNumber", "电站名称"); + writer.addHeaderAlias("totalPrice", "订单总价"); + writer.addHeaderAlias("actPrice", "实际价格"); +// writer.addHeaderAlias("confirmResult", "历史订单ID"); + writer.addHeaderAlias("chargingTime", "累计充电时间"); + writer.addHeaderAlias("chargingDegree", "充电度数"); + writer.addHeaderAlias("startTime", "开始充电时间"); + writer.addHeaderAlias("endTime", "结束充电时间"); + writer.addHeaderAlias("updateTime", "结算时间"); + writer.addHeaderAlias("chargingModeName", "订单来源"); + writer.addHeaderAlias("stopReasonEvcs", "停止原因"); + writer.addHeaderAlias("sourceName", "用户类型"); + +// writer.addHeaderAlias("plateNum", "电站名称"); +// writer.addHeaderAlias("disputeOrderStatus", "桩编号"); + + // 默认的,未添加alias的属性也会写出,如果想只写出加了别名的字段,可以调用此方法排除之 + writer.setOnlyAlias(true); + // 一次性写出内容,使用默认样式,强制输出标题 + writer.write(list, true); + //out为OutputStream,需要写出到的目标流 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); +// //response为HttpServletResponse对象 +// response.setContentType("application/vnd.ms-excel;charset=utf-8"); +// //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码 +// response.setHeader("Content-Disposition", "attachment;filename=历史订单列表.xls"); + ServletOutputStream out = response.getOutputStream(); + + writer.flush(out, true); + // 关闭writer,释放内存 + writer.close(); + //此处记得关闭输出Servlet流 + IoUtil.close(out); + + } + +} diff --git a/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcWorkHistoryOrderMapper.xml b/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcWorkHistoryOrderMapper.xml new file mode 100644 index 00000000..7c39a2b7 --- /dev/null +++ b/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcWorkHistoryOrderMapper.xml @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + history_order_id, charging_station_id, charge_order_id, user_id, terminal_id, serial_number, + internet_serial_number, power_price_total, service_price_total, total_price, promotion_discount, + act_price, act_power_price, act_service_price, internet_commission, internet_svc_commission, + platform_commission, platform_svc_commisssion, operation_commission, operation_svc_commission, + start_soc, end_soc, reconciliation_status, sorting_status, `type`, `status`, del_flag, + create_time, create_by, update_time, update_by, remark, `state`, vin_normal, search_value, + operator_id_evcs, charge_model_evcs, connector_power_evcs, meter_value_end_evcs, + meter_value_start_evcs, operator_id3rdpty_evcs, start_time, stop_reason_evcs, total_power, + user_name_evcs, phone, rate_model_id,stop_reason_evcs_name + + + + + diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/enums/StopReasonEnum.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/enums/StopReasonEnum.java new file mode 100644 index 00000000..34e57236 --- /dev/null +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/enums/StopReasonEnum.java @@ -0,0 +1,93 @@ +package com.xhpc.common.enums; + +/** + * @author yuyang + * @date 2022/8/5 16:44 + */ +public enum StopReasonEnum { + + FORTY("40", "APP 远程停止(0X40)"), + FORTY_ONE("41", "SOC 达到 100%(0X41)"), + FORTY_TWO("42", "充电电量满足设定条件(0X42)"), + FORTY_THREE("43", "充电金额满足设定条件(0X43)"), + FORTY_FOUR("44", "充电时间满足设定条件(0X44)"), + FORTY_FIVE("45", "手动停止充电(0X45)"), + FORTY_A("4A", "充电桩控制系统故障(需要重启或自动恢复)(0X4A)"), + FORTY_B("4B", "控制导引断开(0X4B)"), + FORTY_C("4C", "断路器跳位(0X4C)"), + FORTY_D("4D", "电表通信中断(0X4D)"), + FORTY_E("4E", "余额不足(0X4E)"), + FORTY_F("4F", "充电模块故障(0X4F)"), + FIVE("50", "急停开入(0X50)"), + FIVE_ONE("51", "防雷器异常(0X5)"), + FIVE_TWO("52", "BMS 未就绪(0X52)"), + FIVE_THREE("53", "温度异常(0X53)"), + FIVE_FOUR("54", "电池反接故障(0X54)"), + FIVE_FIVE("55", "电子锁异常(0X55)"), + FIVE_SIX("56", "合闸失败(0X56)"), + FIVE_SEVEN("57", "绝缘异常(0X57)"), + FIVE_NINE("59", "接收 BMS 握手报文 BHM 超时(0X59)"), + FIVE_A("5A", "接收 BMS 和车辆的辨识报文超时 BRM(0X5A)"), + FIVE_B("5B", "接收电池充电参数报文超时 BCP(0X5B)"), + FIVE_C("5C", "接收 BMS 完成充电准备报文超时 BRO AA(0X5C)"), + FIVE_D("5D", "接收电池充电总状态报文超时 BCS(0X5D)"), + FIVE_E("5E", "接收电池充电要求报文超时 BCL(0X5E)"), + FIVE_F("5F", "接收电池状态信息报文超时 BSM(0X5F)"), + SIXTY("60", "GB2015 电池在BHM 阶段有电压不允许充电(0X60)"), + SIXTY_ONE("61", "GB2015 辨识阶段在 BRO_AA 时候电池实际电压与 BCP 报文电池电压差距大于 5%(0X61)"), + SIXTY_TWO("62", "B2015 充电机在预充电阶段从 BRO_AA 变成BRO_00 状态(0X62)"), + SIXTY_THREE("63", "接收主机配置报文超时(0X63)"), + SIXTY_FOUR("64", "充电机未准备就绪,我们没有回 CRO AA,对应老国标(0X64)"), + SIXTY_A("6A", "系统闭锁(0X6A)"), + SIXTY_B("6B", "导引断开(0X6B)"), + SIXTY_C("6C", "断路器跳位(0X6C)"), + SIXTY_D("6D", "电表通信中断(0X6D)"), + SIXTY_E("6E", "余额不足(0X6E)"), + SIXTY_F("6F", "交流保护动作(0X6F)"), + SEVENTY("70", "直流保护动作(0X70)"), + SEVENTY_ONE("71", "充电模块故障(0X71)"), + SEVENTY_TWO("72", "急停按钮停止充电(0X72)"), + SEVENTY_THREE("73", "防雷器异常(0X73)"), + SEVENTY_FOUR("74", "温度异常(0X74)"), + SEVENTY_FIVE("75", "输出异常(0X75)"), + SEVENTY_SIX("76", "充电无流(0X76)"), + SEVENTY_SEVEN("77", "电子锁异常(0X77)"), + SEVENTY_EIGHY("78", "预留(0X78)"), + SEVENTY_NINE("79", "总充电电压异常(0X79)"), + SEVENTY_A("7A", "总充电电流异常(0X7A)"), + SEVENTY_B("7B", "单体充电电压异常(0X7B)"), + SEVENTY_C("7C", "电池组过温(0X7C)"), + SEVENTY_D("7D", "最高单体充电电压异常(0X7D)"), + SEVENTY_E("7E", "最高电池组过温(0X7E)"), + SEVENTY_F("7F", "BMV 单体充电电压异常(0X7F)"), + EIGHTY("80", "BMT 电池组过温(0X80)"), + EIGHTY_ONE("81", "电池状态异常停止充电(0X81)"), + EIGHTY_TWO("82", "车辆发报文禁止充电(0X82)"), + EIGHTY_THREE("83", "充电桩断电(0X83)"), + EIGHTY_FOUE("84", "接收电池充电总状态报文超时(0X84)"), + EIGHTY_FIVE("85", "接收电池充电要求报文超时(0X85)"), + EIGHTY_SIX("86", "接收电池状态信息报文超时(0X86)"), + EIGHTY_SEVEN("87", "接收 BMS 中止充电报文超时(0X87)"), + EIGHTY_EIGHY("88", "接收 BMS 充电统计报文超时(0X88)"), + EIGHTY_NINE("89", "接收对侧 CCS 报文超时(0X89)"), + NINETY_ONE("91", "平台结算(0X91)"); + + private final String code; + private final String name; + + StopReasonEnum(String code, String name){ + this.code = code; + this.name = name; + } + + public static String getNameByCode(String code) { + for (StopReasonEnum typeEnum : StopReasonEnum.values()) { + //移除交办 + if (typeEnum.code.equals(code)) { + return typeEnum.name; + } + } + return ""; + } + +} diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/dto/XhpcWorkHistoryOrderDto.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/dto/XhpcWorkHistoryOrderDto.java new file mode 100644 index 00000000..5ea0ff7d --- /dev/null +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/dto/XhpcWorkHistoryOrderDto.java @@ -0,0 +1,313 @@ +package com.xhpc.order.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author yuyang + * @date 2022/8/5 9:17 + */ +@Data +public class XhpcWorkHistoryOrderDto implements Serializable { + /** + * 历史订单id + */ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long historyOrderId; + + /** + * 电站id + */ + private Long chargingStationId; + + /** + * 充电订单id + */ + private Long chargeOrderId; + + /** + * 用户id + */ + private Long userId; + + /** + * 终端id + */ + private Long terminalId; + + /** + * 流水号 + */ + private String serialNumber; + + /** + * 互联网订单流水号 + */ + private String internetSerialNumber; + + /** + * Evcs订单号,供监管平台和第三方使用 + */ + private String evcsOrderNo; + + /** + * 订单总价 + */ + private BigDecimal totalPrice; + + /** + * 电站活动抵扣 + */ + private BigDecimal promotionDiscount; + + /** + * 实际价格 + */ + private BigDecimal actPrice; + + /** + * 实收电费 + */ + private BigDecimal actPowerPrice; + + /** + * 实收服务费 + */ + private BigDecimal actServicePrice; + + /** + * 流量方总金额抽成 + */ + private BigDecimal internetCommission; + + /** + * 流量方服务费抽成 + */ + private BigDecimal internetSvcCommission; + /** + * 流量方电量抽成 + */ + private BigDecimal internetDegreeCommission; + + /** + * 平台总金额抽成 + */ + private BigDecimal platformCommission; + + /** + * 平台服务费抽成 + */ + private BigDecimal platformSvcCommisssion; + + /** + * 运维总抽成 + */ + private BigDecimal operationCommission; + + /** + * 运维服务费抽成 + */ + private BigDecimal operationSvcCommission; + + /** + * 开始充电soc + */ + private String startSoc; + + /** + * 结束时soc + */ + private String endSoc; + + /** + * 对账状态(0待确认 1已确认,2待提交,3待审核) + */ + private Integer reconciliationStatus; + + /** + * 清分状态(0待清分 1清分在途,2已提现,3待提交,4待审核) + */ + private Integer sortingStatus; + + /** + * 1 自动结算 2 平台结算 + */ + private Integer type; + + /** + * 状态(0正常 1停用) + */ + private Integer status; + + /** + * 删除标志(0代表存在 2代表删除) + */ + private Integer delFlag; + + /** + * 总电费 + */ + private BigDecimal powerPriceTotal; + + /** + * 总服务费 + */ + private BigDecimal servicePriceTotal; + + /** + * 活动总电费 + */ + private BigDecimal activityPowerPriceTotal; + + /** + * 活动总服务费 + */ + private BigDecimal activityServicePriceTotal; + + /** + * 活动总金额 + */ + private BigDecimal activityTotalPrice; + + /** + * 0未统计 1已统计 + */ + private Integer state; + + /** + * VIN 码 + */ + private String vinNormal; + + /** + * 充电电量 + */ + private Double totalPower; + + private Date startTime; + /** + * 结束时间 + */ + private Date endTime; + + /** + * 停止原因 + */ + private String stopReasonEvcs ; + + + private String stopReasonEvcsName ; + + /** + * 运营商/场站OperatorID + */ + private String operatorIdEvcs; + + /** + * 流量方OperatorID + */ + private String operatorId3rdptyEvcs; + + /** + * 终端客户开启充电方式 + * 0:未知 + * 1:市/省级平台无卡启动 + * 2:有卡启动 + * 3:其他无卡启动 + */ + private Integer chargeModelEvcs; + + /** + * 实际充电的客户在运营商侧的名称,<=20字符 + */ + private String userNameEvcs; + + /** + * 接口额定功率 + * 单位:kW, 小数点后 1 位 + */ + private Double connectorPowerEvcs; + + /** + * 电表总起值 + * 单位:度, 小数点后2位 + */ + private Double meterValueStartEvcs; + + /** + * 电表总结束值 + * 单位:度, 小数点后2位 + */ + private Double meterValueEndEvcs; + + /** + * 充电用户手机号 + */ + private String phone; + + + /** + * 推送第三方订单返回的确认结果 + */ + private Integer confirmResult; + + /** + * 费率模型id + */ + private Long rateModelId; + + /** + * 充电方式 + */ + private String chargingMode; + + /** + * 充电方式 + */ + private Integer source; + + /** + * 活动id + */ + private String activityId; + + /** 搜索值 */ + private String searchValue; + + /** 创建者 */ + private String createBy; + + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** 更新者 */ + private String updateBy; + + /** + * 更新时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 备注 + */ + private String remark; + + /** + * 租户id + */ + private String tenantId; +} diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcHistoryOrderMapper.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcHistoryOrderMapper.java index 095ccabc..17b8c6df 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcHistoryOrderMapper.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcHistoryOrderMapper.java @@ -2,6 +2,7 @@ package com.xhpc.order.mapper; import com.xhpc.order.domain.XhpcHistoryOrder; import com.xhpc.order.dto.XhpcChargeHistoryOrder; +import com.xhpc.order.dto.XhpcWorkHistoryOrderDto; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -22,6 +23,8 @@ public interface XhpcHistoryOrderMapper { */ public int insert(XhpcHistoryOrder xhpcHistoryOrder); + public int insertXhpcWorkHistoryOrderDto(XhpcWorkHistoryOrderDto xhpcWorkHistoryOrderDto); + int updateXhpcHistoryOrderSerialNumber(XhpcHistoryOrder xhpcHistoryOrder); /** * 更新 历史订单信息 diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java index 0608d7f7..f06940a6 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java @@ -3,6 +3,7 @@ package com.xhpc.order.service; import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.order.domain.XhpcHistoryOrder; import com.xhpc.order.dto.XhpcChargeHistoryOrder; +import com.xhpc.order.dto.XhpcWorkHistoryOrderDto; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -48,6 +49,8 @@ public interface IXhpcHistoryOrderService { */ void insert(XhpcHistoryOrder xhpcHistoryOrder); + void insertXhpcWorkHistoryOrderDto(XhpcWorkHistoryOrderDto xhpcWorkHistoryOrderDto); + int updateXhpcHistoryOrderSerialNumber(XhpcHistoryOrder xhpcHistoryOrder); diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java index 995e3f79..675a0b48 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java @@ -19,6 +19,7 @@ import com.xhpc.order.domain.XhpcChargeOrder; import com.xhpc.order.domain.XhpcHistoryOrder; import com.xhpc.order.domain.XhpcRealTimeOrder; import com.xhpc.order.dto.XhpcChargeHistoryOrder; +import com.xhpc.order.dto.XhpcWorkHistoryOrderDto; import com.xhpc.order.mapper.XhpcHistoryOrderMapper; import com.xhpc.order.service.IXhpcChargeOrderService; import com.xhpc.order.service.IXhpcHistoryOrderService; @@ -268,6 +269,11 @@ public class XhpcHistoryOrderServiceImpl extends BaseService implements IXhpcHis xhpcHistoryOrderMapper.insert(xhpcHistoryOrder); } + @Override + public void insertXhpcWorkHistoryOrderDto(XhpcWorkHistoryOrderDto xhpcWorkHistoryOrderDto) { + xhpcHistoryOrderMapper.insertXhpcWorkHistoryOrderDto(xhpcWorkHistoryOrderDto); + } + @Override public int updateXhpcHistoryOrderSerialNumber(XhpcHistoryOrder xhpcHistoryOrder) { return xhpcHistoryOrderMapper.updateXhpcHistoryOrderSerialNumber(xhpcHistoryOrder); diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java index 33a84926..af21f7de 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java @@ -13,15 +13,13 @@ import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.core.web.service.BaseService; import com.xhpc.common.data.redis.CacheOrderData; import com.xhpc.common.data.redis.CacheRealtimeData; +import com.xhpc.common.enums.StopReasonEnum; import com.xhpc.common.redis.service.RedisService; import com.xhpc.common.security.service.TokenService; import com.xhpc.common.util.EvcsUtil; import com.xhpc.common.util.UserTypeUtil; import com.xhpc.order.domain.*; -import com.xhpc.order.dto.RateTime; -import com.xhpc.order.dto.XhpcActivityDiscountDto; -import com.xhpc.order.dto.XhpcActivityFormulaDomainDto; -import com.xhpc.order.dto.XhpcActivityInternetDomainDto; +import com.xhpc.order.dto.*; import com.xhpc.order.mapper.XhpcRealTimeOrderMapper; import com.xhpc.order.service.IXhpcChargeOrderService; import com.xhpc.order.service.IXhpcHistoryOrderService; @@ -30,6 +28,7 @@ import com.xhpc.system.api.domain.SysUser; import com.xhpc.system.api.model.LoginUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -1314,7 +1313,14 @@ public class XhpcRealTimeOrderServiceImpl extends BaseService implements IXhpcRe logger.info("<<<<<<<<<<<<<<<<订单结束回调成功>>>>>>>>>订单号:>>>"+orderNo+">>>>>"); logger.info("<<<<<<<<<<<<<<<<订单结束回调成功>>>>>>>>>订单号:>>>"+orderNo+">>>>>>>>"); logger.info("<<<<<<<<<<<<<<<<订单结束回调成功>>>>>>>>>订单号:>>>"+orderNo+">>>>>>>>"); - + if(!"40".equals(xhpcHistoryOrder.getStopReasonEvcs())){ + XhpcWorkHistoryOrderDto xhpcWorkHistoryOrderDto =new XhpcWorkHistoryOrderDto(); + BeanUtils.copyProperties(xhpcHistoryOrder,xhpcWorkHistoryOrderDto); + String nameByCode = StopReasonEnum.getNameByCode(xhpcHistoryOrder.getStopReasonEvcs()); + xhpcWorkHistoryOrderDto.setStopReasonEvcsName(nameByCode); + xhpcHistoryOrderService.insertXhpcWorkHistoryOrderDto(xhpcWorkHistoryOrderDto); + logger.info("<<<<<<<<<<<<<<<<入库成功>>>>>>>>>订单号:>>>"); + } } diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml index c66cf27b..c79e2824 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml @@ -404,6 +404,345 @@ + + INSERT INTO xhpc_work_history_order + + + charging_station_id, + + + charge_order_id, + + + user_id, + + + terminal_id, + + + serial_number, + + + internet_serial_number, + + + power_price_total, + + + service_price_total, + + + total_price, + + + promotion_discount, + + + act_price, + + + act_power_price, + + + act_service_price, + + + internet_commission, + + + internet_svc_commission, + + + platform_commission, + + + platform_svc_commisssion, + + + operation_commission, + + + operation_svc_commission, + + + start_soc, + + + end_soc, + + + reconciliation_status, + + + sorting_status, + + + type, + + + status, + + + del_flag, + + + create_time, + + + create_by, + + + update_time, + + + update_by, + + + remark, + + + state, + + + vin_normal, + + + search_value, + + + operator_id_evcs, + + + charge_model_evcs, + + + connector_power_evcs, + + + meter_value_end_evcs, + + + meter_value_start_evcs, + + + operator_id3rdpty_evcs, + + + start_time, + + + end_time, + + + stop_reason_evcs, + + + rate_model_id, + + + total_power, + + + user_name_evcs, + + + phone, + + + charging_mode, + + + source, + + + internet_degree_commission, + + + activity_power_price_total, + + + activity_service_price_total, + + + activity_total_price, + + + activity_id, + + + stop_reason_evcs_name, + + + + + #{chargingStationId,jdbcType=BIGINT}, + + + #{chargeOrderId,jdbcType=BIGINT}, + + + #{userId,jdbcType=BIGINT}, + + + #{terminalId,jdbcType=BIGINT}, + + + #{serialNumber,jdbcType=VARCHAR}, + + + #{internetSerialNumber,jdbcType=VARCHAR}, + + + #{powerPriceTotal,jdbcType=DECIMAL}, + + + #{servicePriceTotal,jdbcType=DECIMAL}, + + + #{totalPrice,jdbcType=DECIMAL}, + + + #{promotionDiscount}, + + + #{actPrice,jdbcType=DECIMAL}, + + + #{actPowerPrice,jdbcType=DECIMAL}, + + + #{actServicePrice,jdbcType=DECIMAL}, + + + #{internetCommission,jdbcType=DECIMAL}, + + + #{internetSvcCommission,jdbcType=DECIMAL}, + + + #{platformCommission,jdbcType=DECIMAL}, + + + #{platformSvcCommisssion,jdbcType=DECIMAL}, + + + #{operationCommission,jdbcType=DECIMAL}, + + + #{operationSvcCommission,jdbcType=DECIMAL}, + + + #{startSoc,jdbcType=VARCHAR}, + + + #{endSoc,jdbcType=VARCHAR}, + + + #{reconciliationStatus,jdbcType=INTEGER}, + + + #{sortingStatus,jdbcType=INTEGER}, + + + #{type,jdbcType=TINYINT}, + + + #{status,jdbcType=INTEGER}, + + + #{delFlag,jdbcType=INTEGER}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{createBy,jdbcType=VARCHAR}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + #{updateBy,jdbcType=VARCHAR}, + + + #{remark,jdbcType=VARCHAR}, + + + #{state,jdbcType=INTEGER}, + + + #{vinNormal,jdbcType=VARCHAR}, + + + #{searchValue,jdbcType=VARCHAR}, + + + #{operatorIdEvcs,jdbcType=VARCHAR}, + + + #{chargeModelEvcs,jdbcType=INTEGER}, + + + #{connectorPowerEvcs,jdbcType=DOUBLE}, + + + #{meterValueEndEvcs,jdbcType=DOUBLE}, + + + #{meterValueStartEvcs,jdbcType=DOUBLE}, + + + #{operatorId3rdptyEvcs,jdbcType=VARCHAR}, + + + #{startTime,jdbcType=TIMESTAMP}, + + + #{endTime,jdbcType=TIMESTAMP}, + + + #{stopReasonEvcs,jdbcType=INTEGER}, + + + #{rateModelId}, + + + #{totalPower,jdbcType=DOUBLE}, + + + #{userNameEvcs,jdbcType=VARCHAR}, + + + #{phone,jdbcType=VARCHAR}, + + + #{chargingMode,jdbcType=VARCHAR}, + + + #{source}, + + + #{internetDegreeCommission}, + + + #{activityPowerPriceTotal}, + + + #{activityServicePriceTotal}, + + + #{activityTotalPrice}, + + + #{activityId}, + + + #{stopReasonEvcsName}, + + + + UPDATE xhpc_history_order