瀏覽代碼

新增中国ETC小程序取消订单后本地订单处理定时任务

shuiqilin
houyi 1 年之前
父節點
當前提交
532e7dd651

+ 69
- 0
src/main/java/com/qtzl/alterSales/dao/entity/second/AflCancelOrder.java 查看文件

@@ -0,0 +1,69 @@
package com.qtzl.alterSales.dao.entity.second;

import com.qtzl.alterSales.manager.enums.AflCancelOrderStateEnum;
import com.txffp.api.core.dao.entity.AbstractInsertTimeEntity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

/***
* <p>
* 路网过户或取消订单后记录;
* </p>
* @author hou yi
* {@code @date} 2024/3/29 14:33
**/
@Entity
@Table(name = "AFL_CANCEL_ORDER")
public class AflCancelOrder extends AbstractInsertTimeEntity {

/*** 车牌号 */
private String plateNum;
/*** 车牌颜色 */
private Integer plateColor;
/*** 处理状态 */
private AflCancelOrderStateEnum state;

public AflCancelOrder() {
}

public AflCancelOrder(String plateNum, Integer plateColor, AflCancelOrderStateEnum state) {
this.plateNum = plateNum;
this.plateColor = plateColor;
this.state = state;
}

/*** 车牌号 */
@Column(name = "PLATE_NUM")
public String getPlateNum() {
return this.plateNum;
}

/*** 车牌号 */
public void setPlateNum(String plateNum) {
this.plateNum = plateNum;
}

/*** 车牌颜色 */
@Column(name = "PLATE_COLOR")
public Integer getPlateColor() {
return this.plateColor;
}

/*** 车牌颜色 */
public void setPlateColor(Integer plateColor) {
this.plateColor = plateColor;
}

/*** 处理状态 */
@Column(name = "STATE")
public AflCancelOrderStateEnum getState() {
return this.state;
}

/*** 处理状态 */
public void setState(AflCancelOrderStateEnum state) {
this.state = state;
}
}

+ 6
- 6
src/main/java/com/qtzl/alterSales/dao/entity/third/EtcApplyOrder.java 查看文件

@@ -77,7 +77,7 @@ public class EtcApplyOrder extends StringUUIDEntity {
private String applyer;
private Integer applySourceType;
private Date createTime;
private Date upDate;
private Date updateTime;

@Column(name = "orderNo")
public String getOrderNo() {
@@ -369,9 +369,9 @@ public class EtcApplyOrder extends StringUUIDEntity {
return createTime;
}

@Column(name = "upDate")
public Date getUpDate() {
return upDate;
@Column(name = "updateTime")
public Date getUpdateTime() {
return updateTime;
}

public void setOrderNo(String orderNo) {
@@ -606,7 +606,7 @@ public class EtcApplyOrder extends StringUUIDEntity {
this.createTime = createTime;
}

public void setUpDate(Date upDate) {
this.upDate = upDate;
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}

+ 81
- 0
src/main/java/com/qtzl/alterSales/dao/entity/third/EtcOrderNoRegist.java 查看文件

@@ -0,0 +1,81 @@
package com.qtzl.alterSales.dao.entity.third;

import cn.com.taiji.common.entity.StringUUIDEntity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;

/***
* <p>
*
* </p>
* @author hou yi
* {@code @date} 2024/3/29 18:16
**/
@Entity
@Table(name = "etc_order_no_regist")
public class EtcOrderNoRegist extends StringUUIDEntity {

private String vehiclePlate;
private Integer vehiclePlateColor;
private Integer orderType;
private String orderNo;
private String orgCode;
private Date createTime;

@Column(name = "vehiclePlate")
public String getVehiclePlate() {
return vehiclePlate;
}

public void setVehiclePlate(String vehiclePlate) {
this.vehiclePlate = vehiclePlate;
}

@Column(name = "vehiclePlateColor")
public Integer getVehiclePlateColor() {
return vehiclePlateColor;
}

public void setVehiclePlateColor(Integer vehiclePlateColor) {
this.vehiclePlateColor = vehiclePlateColor;
}

@Column(name = "orderType")
public Integer getOrderType() {
return orderType;
}

public void setOrderType(Integer orderType) {
this.orderType = orderType;
}

@Column(name = "orderNo")
public String getOrderNo() {
return orderNo;
}

public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}

@Column(name = "orgCode")
public String getOrgCode() {
return orgCode;
}

public void setOrgCode(String orgCode) {
this.orgCode = orgCode;
}

@Column(name = "createTime")
public Date getCreateTime() {
return createTime;
}

public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}

+ 17
- 0
src/main/java/com/qtzl/alterSales/dao/repo/jpa/second/AflCancelOrderRepo.java 查看文件

@@ -0,0 +1,17 @@
package com.qtzl.alterSales.dao.repo.jpa.second;

import com.qtzl.alterSales.dao.entity.second.AflCancelOrder;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

/***
* <p>
*
* </p>
* @author hou yi
* {@code @date} 2024/3/29 14:42
**/
public interface AflCancelOrderRepo extends JpaRepository<AflCancelOrder, String>, JpaSpecificationExecutor<AflCancelOrder> {


}

+ 16
- 0
src/main/java/com/qtzl/alterSales/dao/repo/jpa/third/EtcApplyOrderRepo.java 查看文件

@@ -2,6 +2,11 @@ package com.qtzl.alterSales.dao.repo.jpa.third;

import com.qtzl.alterSales.dao.entity.third.EtcApplyOrder;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/***
* <p>
@@ -12,4 +17,15 @@ import org.springframework.data.jpa.repository.JpaRepository;
**/
public interface EtcApplyOrderRepo extends JpaRepository<EtcApplyOrder, String> {



/***
* 根据车牌号、车牌颜色。查询订单
* @param orderId 订单ID
* @param maxDate 最大时间
* @return 、
*/
@Query(" FROM EtcApplyOrder WHERE id in(?1) AND sealedStatus = 0 AND createTime<?2")
List<EtcApplyOrder> findByPlateNumAndPlateColor(List<String> orderId, Date maxDate);

}

+ 27
- 0
src/main/java/com/qtzl/alterSales/dao/repo/jpa/third/EtcOrderNoRegistRepo.java 查看文件

@@ -0,0 +1,27 @@
package com.qtzl.alterSales.dao.repo.jpa.third;

import com.qtzl.alterSales.dao.entity.third.EtcOrderNoRegist;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/***
* <p>
*
* </p>
* @author hou yi
* {@code @date} 2024/3/29 18:20
**/
public interface EtcOrderNoRegistRepo extends JpaRepository<EtcOrderNoRegist, String> {

/***
* 根據车牌号、车牌颜色查询注册表
* @param vehiclePlate 车牌号
* @param plateColor 车牌颜色
* @return 、
*/
@Query("FROM EtcOrderNoRegist WHERE vehiclePlate=?1 AND vehiclePlateColor=?2")
List<EtcOrderNoRegist> findByVehiclePlateAndVehiclePlateColor(String vehiclePlate, Integer plateColor);

}

+ 8
- 0
src/main/java/com/qtzl/alterSales/dao/repo/jpa/third/EtcOrderVehicleInfoRepo.java 查看文件

@@ -24,6 +24,14 @@ public interface EtcOrderVehicleInfoRepo extends JpaRepository<EtcOrderVehicleIn
*/
List<EtcOrderVehicleInfo> findByVehicleId(String vehicleId);

/***
* 根据车辆ID查询订单ID
* @param vehicleId 车辆ID
* @return 、
*/
@Query("SELECT applyOrderId FROM EtcOrderVehicleInfo WHERE vehicleId =?1")
List<String> getOrderId(String vehicleId);

/***
* 查询比亚迪车辆、订单信息
* @param startTime 开始时间

+ 35
- 0
src/main/java/com/qtzl/alterSales/manager/enums/AflCancelOrderStateEnum.java 查看文件

@@ -0,0 +1,35 @@
package com.qtzl.alterSales.manager.enums;

/***
* <p>
* 订单取消处理状态 枚举
* </p>
* @author hou yi
* {@code @date} 2024/3/29 14:35
**/
public enum AflCancelOrderStateEnum {
/***
* 枚举具体描述
**/
PENDING_PROCESSING("PENDING_PROCESSING", "待处理"),
SUCCESS("SUCCESS", "处理成功"),
FAIL("FAIL", "处理失败"),
;

private final String code;

private final String type;

AflCancelOrderStateEnum(String code, String type) {
this.code = code;
this.type = type;
}

public String getCode() {
return this.code;
}

public String getType() {
return this.type;
}
}

+ 52
- 0
src/main/java/com/qtzl/alterSales/manager/quartz/AflCancelOrderTask.java 查看文件

@@ -0,0 +1,52 @@
package com.qtzl.alterSales.manager.quartz;

import cn.com.taiji.common.manager.AbstractManager;
import com.qtzl.alterSales.dao.entity.second.AflCancelOrder;
import com.qtzl.alterSales.dao.repo.jpa.second.AflCancelOrderRepo;
import com.qtzl.alterSales.manager.enums.AflCancelOrderStateEnum;
import com.qtzl.alterSales.manager.service.AflCancelOrderService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;

/***
* <p>
* 用户在中国ETC小程序进行过户、取消订单后,经路网客服审核通过后,根据每日下载的增量数据判断进行本地订单的处理
* </p>
* @author hou yi
* {@code @date} 2024/3/29 18:24
**/
@Component
public class AflCancelOrderTask extends AbstractManager {

private static final Logger log = LoggerFactory.getLogger(AflCancelOrderTask.class);

@Resource
private AflCancelOrderService aflCancelOrderService;
@Resource
private AflCancelOrderRepo aflCancelOrderRepo;

@Scheduled(cron = "0 0/10 8-11 * * ?")
// @Scheduled(cron = "0/2 * * * * ?")
public void dashboardBatchSync() {
final List<AflCancelOrder> cancelOrderList = aflCancelOrderRepo.findAll((root, query, cb) -> query.where(
cb.notEqual(root.<AflCancelOrderStateEnum>get("state"), AflCancelOrderStateEnum.SUCCESS)
).getRestriction());
log.info("中国ETC小程序过户、取消订单本地订单处理。本次处理条数:{}", cancelOrderList.size());
for (AflCancelOrder cancelOrder : cancelOrderList) {
try {
aflCancelOrderService.cancelOrder(cancelOrder);
cancelOrder.setState(AflCancelOrderStateEnum.SUCCESS);
} catch (Exception e) {
log.info("中国ETC小程序过户、取消订单本地订单处理失败。车牌号:{}, 车牌颜色:{}, 错误信息:{}", cancelOrder.getPlateNum(), cancelOrder.getPlateColor(), e.getMessage());
cancelOrder.setState(AflCancelOrderStateEnum.FAIL);
}
aflCancelOrderRepo.save(cancelOrder);
}
log.info("中国ETC小程序过户、取消订单本地订单处理完成");
}
}

+ 1
- 1
src/main/java/com/qtzl/alterSales/manager/quartz/BydDashboardBatchDataGenerateTask.java 查看文件

@@ -27,7 +27,7 @@ public class BydDashboardBatchDataGenerateTask extends AbstractManager {
@Resource
private BydService bydService;

@Scheduled(cron = "0 30 0-3 * * ?")
@Scheduled(cron = "0 0/30 0-3 * * ?")
public void dashboardBatchSync() {
//
final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

+ 21
- 0
src/main/java/com/qtzl/alterSales/manager/service/AflCancelOrderService.java 查看文件

@@ -0,0 +1,21 @@
package com.qtzl.alterSales.manager.service;

import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import com.qtzl.alterSales.dao.entity.second.AflCancelOrder;

/***
* <p>
* 取消订单车辆处理
* </p>
* @author hou yi
* {@code @date} 2024/3/29 17:09
**/
public interface AflCancelOrderService {

/***
* 取消订单处理
* @param aflCancelOrder \
*/
void cancelOrder(AflCancelOrder aflCancelOrder);

}

+ 60
- 0
src/main/java/com/qtzl/alterSales/manager/service/AflCancelOrderServiceImpl.java 查看文件

@@ -0,0 +1,60 @@
package com.qtzl.alterSales.manager.service;

import com.qtzl.alterSales.dao.entity.second.AflCancelOrder;
import com.qtzl.alterSales.dao.entity.third.EtcApplyOrder;
import com.qtzl.alterSales.dao.entity.third.EtcOrderNoRegist;
import com.qtzl.alterSales.dao.repo.jpa.third.EtcApplyOrderRepo;
import com.qtzl.alterSales.dao.repo.jpa.third.EtcOrderNoRegistRepo;
import com.qtzl.alterSales.dao.repo.jpa.third.EtcOrderVehicleInfoRepo;
import com.qtzl.alterSales.manager.tools.DateTools;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/***
* <p>
*
* </p>
* @author hou yi
* {@code @date} 2024/3/29 17:28
**/
@Service
public class AflCancelOrderServiceImpl implements AflCancelOrderService {

private static final Logger log = LoggerFactory.getLogger(AflCancelOrderServiceImpl.class);

@Resource
private EtcApplyOrderRepo etcApplyOrderRepo;
@Resource
private EtcOrderNoRegistRepo etcOrderNoRegistRepo;
@Resource
private EtcOrderVehicleInfoRepo etcOrderVehicleInfoRepo;

@Override
public void cancelOrder(AflCancelOrder aflCancelOrder) {
//
final List<String> orderId = etcOrderVehicleInfoRepo.getOrderId(aflCancelOrder.getPlateNum() + "_" + aflCancelOrder.getPlateColor());
if (CollectionUtils.isEmpty(orderId)){
log.info("未查询到订单对应车辆信息,车牌号:{}, 车牌颜色:{}", aflCancelOrder.getPlateNum(), aflCancelOrder.getPlateColor());
return;
}
final List<EtcApplyOrder> applyOrders = etcApplyOrderRepo.findByPlateNumAndPlateColor(orderId, DateTools.getDate(aflCancelOrder.getInsertTime()));
if (!CollectionUtils.isEmpty(applyOrders)) {
applyOrders.forEach(vo -> vo.setSealedStatus(1));
etcApplyOrderRepo.saveAll(applyOrders);
return;
}

// 处理注册表
final List<EtcOrderNoRegist> orderNoRegist = etcOrderNoRegistRepo.findByVehiclePlateAndVehiclePlateColor(aflCancelOrder.getPlateNum(), aflCancelOrder.getPlateColor());
if (!CollectionUtils.isEmpty(orderNoRegist)) {
etcOrderNoRegistRepo.deleteAll(orderNoRegist);
}

}
}

+ 8
- 0
src/test/java/SaleTest.java 查看文件

@@ -6,6 +6,7 @@ import com.qtzl.alterSales.dao.entity.second.AflBydDashboard;
import com.qtzl.alterSales.dao.repo.jpa.second.AflBydDashboardRepo;
import com.qtzl.alterSales.dao.repo.jpa.third.EtcOrderVehicleInfoRepo;
import com.qtzl.alterSales.manager.enums.AflBydDashboardPushStateEnum;
import com.qtzl.alterSales.manager.quartz.AflCancelOrderTask;
import com.qtzl.alterSales.manager.service.AflBydDashboardService;
import com.qtzl.alterSales.manager.service.byd.BydService;
import com.qtzl.alterSales.manager.service.byd.vo.BydDashBoardResponse;
@@ -41,6 +42,13 @@ public class SaleTest {
private AflBydDashboardRepo aflBydDashboardRepo;
@Resource
private AflBydDashboardService aflBydDashboardService;
@Resource
private AflCancelOrderTask aflCancelOrderTask;

@Test
public void cancel(){
aflCancelOrderTask.dashboardBatchSync();
}

@Test
public void orderVehicleQuery() throws ParseException {

Loading…
取消
儲存