Переглянути джерело

core\ias 售后渠道通知

master
chenchaod 4 дні тому
джерело
коміт
1e21baad53

+ 2
- 0
gly-base-core/src/main/java/cn/com/taiji/core/entity/ass/AssAgencyConfig.java Переглянути файл

@@ -52,5 +52,7 @@ public class AssAgencyConfig extends StringPropertyUUIDEntity {
private LocalDateTime createTime;//创建时间
@Column(name = "UPDATE_TIME")
private LocalDateTime updateTime;//更新时间
@Column(name = "ASS_NOTICE_URL")
private String assNoticeUrl;//售后渠道通知地址

}

+ 3
- 0
gly-base-core/src/main/java/cn/com/taiji/core/entity/ass/AssVehicleInfoChange.java Переглянути файл

@@ -77,6 +77,9 @@ public class AssVehicleInfoChange extends StringPropertyUUIDEntity {
@NotNull
@Column(name = "TYPE")
private Integer type;//收费车型;对应VehicleType枚举
@NotNull
@Column(name = "OLD_TYPE")
private Integer oldType;//旧收费车型;对应VehicleType枚举
@NotBlank
@Column(name = "VEHICLE_TYPE")
private String vehicleType;// 行驶证车辆类型(ocr识别的)

+ 1
- 1
gly-base-core/src/main/java/cn/com/taiji/core/manager/tools/issue/QdCallUtil.java Переглянути файл

@@ -136,7 +136,7 @@ public class QdCallUtil extends CommonAbstract {
return response;
}

private void saveCallBackResult(String orderNo,OrderType type, String url, AbsQdCall callbackModel, String response, String exceMsg) {
public void saveCallBackResult(String orderNo,OrderType type, String url, AbsQdCall callbackModel, String response, String exceMsg) {
IssueOrderChannelNotice quDaoCallBackResult = new IssueOrderChannelNotice();
quDaoCallBackResult.setOrderNo(orderNo);
quDaoCallBackResult.setReqUrl(url);

+ 3
- 3
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/model/AssOrderChannelNoticeModel.java Переглянути файл

@@ -5,12 +5,12 @@ import lombok.Data;
@Data
public class AssOrderChannelNoticeModel extends AbsQdCall {
private String orderNo; //订单编号 String
private String orderType; //订单类型 Integer
private String orderStatus; //订单状态 Integer
private Integer orderType; //订单类型 Integer
private Integer orderStatus; //订单状态 Integer
private String reason; //订单取消原因 String
private String cancelTime; //取消时间 String
private String applyTime; //申请时间 String
private CancelInfo cancelInfo; //注销信息 Object
private String deviceReplaceInfo; //设备更换信息 Object
private String vehicleChangeInfo; //车辆变更信息 Object
private VehicleChangeModel vehicleChangeInfo; //车辆变更信息 Object
}

+ 18
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/model/VehicleChangeModel.java Переглянути файл

@@ -0,0 +1,18 @@
package cn.com.taiji.core.model.comm.protocol.ats.model;

import lombok.Data;

/**
* @Author:ChenChao
* @Date:2025/9/9 17:33
* @Filename:VehicleChangeModel
* @description:
*/
@Data
public class VehicleChangeModel {
private Integer orderStep;//订单阶段
private String vehicleId;//新车牌号+颜色
private String oldVehicleId;//旧车牌号+颜色
private Integer feeVehicleType;//新收费车型
private Integer oldFeeVehicleType;//新收费车型
}

+ 28
- 12
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/AbstractIasManager.java Переглянути файл

@@ -1,26 +1,21 @@
package cn.com.taiji.ias.manager;

import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.pub.BeanTools;
import cn.com.taiji.common.pub.TimeTools;
import cn.com.taiji.core.entity.comm.CommonPayConfig;
import cn.com.taiji.core.entity.ass.AssAgencyConfig;
import cn.com.taiji.core.entity.dict.issue.*;
import cn.com.taiji.core.entity.dict.pay.PayChannelType;
import cn.com.taiji.core.entity.dict.pay.TradeState;
import cn.com.taiji.core.entity.dict.pay.TradeType;
import cn.com.taiji.core.entity.issue.IssueOrderPay;
import cn.com.taiji.core.entity.issue.IssueOrderRefund;
import cn.com.taiji.core.entity.issue.IssueOrderinfo;
import cn.com.taiji.core.entity.user.AccountInfo;
import cn.com.taiji.core.entity.user.Staff;
import cn.com.taiji.core.manager.tools.MyTimeTools;
import cn.com.taiji.core.manager.tools.issue.PayTools;
import cn.com.taiji.core.manager.tools.issue.QdCallUtil;
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest;
import cn.com.taiji.core.model.comm.protocol.ats.weiXin.*;
import cn.com.taiji.core.model.comm.protocol.ias.order.OrderPayApplyRequest;
import cn.com.taiji.core.model.comm.protocol.ias.order.OrderPayApplyResponse;
import cn.com.taiji.core.model.comm.protocol.ats.model.AbsQdCall;
import cn.com.taiji.core.model.comm.protocol.ias.vaild.VehiclePlateCheckRequest;
import cn.com.taiji.core.model.comm.protocol.ias.vaild.VehiclePlateCheckResponse;
import cn.com.taiji.core.repo.jpa.ass.AssAgencyConfigRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkCustomerInfoRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkServicehallRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkVehicleInfoRepo;
@@ -34,12 +29,9 @@ import cn.com.taiji.ias.manager.audit.VerificationRuleManager;
import cn.com.taiji.ias.manager.valid.VehiclePlateCheckManager;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Random;
import java.util.concurrent.TimeUnit;

public abstract class AbstractIasManager<T extends AbstractSignTypeRequest<?>> extends AbstractHandleManager<T> {

@@ -68,7 +60,11 @@ public abstract class AbstractIasManager<T extends AbstractSignTypeRequest<?>> e
@Autowired
protected VerificationRuleManager verificationRuleManager;
@Autowired
protected QdCallUtil qdCallUtil;
@Autowired
protected PayTools payTools;
@Autowired
protected AssAgencyConfigRepo assAgencyConfigRepo;

public AbstractIasManager(DataType dataType) {
super(dataType);
@@ -154,4 +150,24 @@ public abstract class AbstractIasManager<T extends AbstractSignTypeRequest<?>> e
+ (int)((Math.random() * 9 + 1) * Math.pow(10, 5));
}

//发行异步通知渠道
protected void asyCallBackQd(IssueOrderinfo order, String msg) {
executor.execute(() -> {
qdCallUtil.callBackQd(order, msg);
});
}
//售后异步通知渠道
protected void asyCallBackQd(String orderNo,String agencyId, AbsQdCall callbackModel) {
executor.execute(() -> {
AssAgencyConfig agencyConfig = assAgencyConfigRepo.findByAgencyId(agencyId);
if (agencyConfig == null || !hasText(agencyConfig.getAssNoticeUrl())) {
//记录日志
qdCallUtil.saveCallBackResult(orderNo, OrderType.AFTERSALE, "没有配通知地址", callbackModel, "", "无法通知");
}else {
qdCallUtil.getAtsChannelNoticeResponse(orderNo, agencyId, OrderType.AFTERSALE, agencyConfig.getAssNoticeUrl(), callbackModel);
}
});

}

}

+ 41
- 1
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/vehicleChange/VehicleChangeApplyManager.java Переглянути файл

@@ -2,6 +2,7 @@ package cn.com.taiji.ias.manager.ass.vehicleChange;

import cn.com.taiji.common.manager.ManagerException;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.pub.TimeTools;
import cn.com.taiji.core.entity.ass.AssAgencyConfig;
import cn.com.taiji.core.entity.ass.AssOrderinfo;
import cn.com.taiji.core.entity.ass.AssVehicleInfoChange;
@@ -15,6 +16,8 @@ import cn.com.taiji.core.entity.dict.ass.AssOrderType;
import cn.com.taiji.core.entity.dict.basic.*;
import cn.com.taiji.core.entity.dict.issue.OrderType;
import cn.com.taiji.core.entity.user.Staff;
import cn.com.taiji.core.model.comm.protocol.ats.model.AssOrderChannelNoticeModel;
import cn.com.taiji.core.model.comm.protocol.ats.model.VehicleChangeModel;
import cn.com.taiji.core.model.comm.protocol.ias.ass.VehicleChangeApllyRequest;
import cn.com.taiji.core.model.comm.protocol.ias.ass.VehicleChangeAplyResponse;
import cn.com.taiji.core.model.comm.protocol.ias.vaild.VehiclePlateCheckResponse;
@@ -58,6 +61,7 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
private static final String PLATE_CHANGEFLAG = "plate_changeFlag";//车牌变更标识
private static final String ZC_CARD = "zcCard";
private static final String ZC_OBU = "zcOBU";
private static final String CHANGE_INFO = "zcCardInfo";

@Autowired
private AssAgencyConfigRepo agencyConfigRepo;
@@ -133,7 +137,14 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
throw newBusinessException("渠道配置信息不存在");
}
if (!agencyConfig.getVehicleChange()) {
throw newBusinessException(agencyConfig.getDealType() == 1?"渠道不支持车辆信息变更,请注销新办":agencyConfig.getDeviceChangeNotice());
if (SourceType.CHANNEL.equals(req.getOrderSource())){
throw newBusinessException("渠道不支持车辆信息变更");
}else{
if (!hasText(req.getProductId())){
throw newBusinessException("需要选择产品办理");
}
}
// throw newBusinessException(agencyConfig.getDealType() == 1?"渠道不支持车辆信息变更,请注销新办":agencyConfig.getDeviceChangeNotice());
}
dataStream.put(PLATE_CHANGEFLAG, true);
}else {
@@ -242,14 +253,43 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
changeInfo.setUserNegImagesUrl(req.getUserNegImagesUrl());
changeInfo.setUserAdress(req.getUserAdress());
//===========申请人结束=================
changeInfo.setProductId(req.getProductId());
changeInfo.setOldType(vehicleInfo.getType());

//ocr信息比对
String failReson = checkOcr(req, dataStream);
order.setAuditReason(failReson);
orderInfoRepo.persist(order);
assVehicleInfoChangeRepo.persist(changeInfo);
dataStream.put(ORDER, order);
dataStream.put(CHANGE_INFO, changeInfo);

}

@Override
protected void onSuccessInternal(VehicleChangeApllyRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException {
AssOrderinfo assOrderinfo = (AssOrderinfo) dataStream.get(ORDER);
AssVehicleInfoChange vehicleInfoChange = (AssVehicleInfoChange) dataStream.get(CHANGE_INFO);
//通知渠道
AssOrderChannelNoticeModel callModel = new AssOrderChannelNoticeModel();
callModel.setOrderNo(assOrderinfo.getOrderNo());
callModel.setOrderType(assOrderinfo.getOrderType().getCode());
callModel.setOrderStatus(assOrderinfo.getOrderStatus().getCode());
callModel.setReason(assOrderinfo.getCancelReason());
// callModel.setCancelTime(assOrderinfo.getCancelTime().format(TimeTools.ISO_LOCAL_DATE_TIME));
callModel.setApplyTime(assOrderinfo.getApplyTime().format(TimeTools.ISO_LOCAL_DATE_TIME));
VehicleChangeModel vehicleChangeModel = new VehicleChangeModel();
vehicleChangeModel.setOrderStep(assOrderinfo.getOrderStep().getCode());
vehicleChangeModel.setVehicleId(vehicleInfoChange.getVehiclePlate()+"_"+vehicleInfoChange.getVehiclePlateColor());
vehicleChangeModel.setOldVehicleId(assOrderinfo.getVehicleId());
vehicleChangeModel.setFeeVehicleType(vehicleInfoChange.getType());
vehicleChangeModel.setOldFeeVehicleType(vehicleInfoChange.getOldType());
callModel.setVehicleChangeInfo(vehicleChangeModel);
//通知渠道
asyCallBackQd(assOrderinfo.getOrderNo(),assOrderinfo.getAgencyId(), callModel);

}

private String checkOcr(VehicleChangeApllyRequest req, Map<String, Object> dataStream) throws ServiceHandleException {
AssOrderinfo orderinfo = (AssOrderinfo) dataStream.get(ORDER);
OrderVerificationModel model = new OrderVerificationModel();

+ 1
- 9
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/AbstractOrderManager.java Переглянути файл

@@ -10,7 +10,6 @@ import cn.com.taiji.core.entity.dict.issue.TransactionBizType;
import cn.com.taiji.core.entity.issue.IssueOrderinfo;
import cn.com.taiji.core.entity.issue.IssueOrderinfoExt;
import cn.com.taiji.core.entity.issue.TransactionStatus;
import cn.com.taiji.core.manager.tools.issue.QdCallUtil;
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest;
import cn.com.taiji.core.model.comm.protocol.ods.ois.issue.OisOrderSaveRequest;
import cn.com.taiji.core.repo.jpa.basic.QtkCustomerInfoRepo;
@@ -73,8 +72,7 @@ public abstract class AbstractOrderManager<T extends AbstractSignTypeRequest<?>>

@Autowired
protected IssueOrderChannelNoticeRepo issueOrderChannelNoticeRepo;
@Autowired
protected QdCallUtil qdCallUtil;

@Autowired
protected IssueOrderRefundRepo refundRepo;

@@ -123,13 +121,7 @@ public abstract class AbstractOrderManager<T extends AbstractSignTypeRequest<?>>
jsonPostRepeat(req);
}

//异步通知渠道
protected void asyCallBackQd(IssueOrderinfo order, String msg) {
executor.execute(() -> {
qdCallUtil.callBackQd(order, msg);
});

}

protected void checkElecFence(Double latitude, Double longitude, QtkServiceHall serviceHall) throws ServiceHandleException {
//渠道传的地点

Завантаження…
Відмінити
Зберегти