|
|
@@ -1,29 +1,44 @@ |
|
|
|
package cn.com.taiji.ias.manager.order; |
|
|
|
|
|
|
|
import cn.com.taiji.common.manager.net.http.ServiceHandleException; |
|
|
|
import cn.com.taiji.core.entity.basic.QtkBrandInfo; |
|
|
|
import cn.com.taiji.core.entity.dict.basic.SourceType; |
|
|
|
import cn.com.taiji.core.entity.dict.issue.IssueOrderStatus; |
|
|
|
import cn.com.taiji.core.entity.dict.issue.IssueOrderStep; |
|
|
|
import cn.com.taiji.core.entity.dict.issue.ShippingStatus; |
|
|
|
import cn.com.taiji.core.entity.issue.IssueOrderinfo; |
|
|
|
import cn.com.taiji.core.entity.issue.IssueOrderinfoExt; |
|
|
|
import cn.com.taiji.core.entity.issue.IssueProduct; |
|
|
|
import cn.com.taiji.core.entity.user.Staff; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.ias.order.AbstractIssueResponse; |
|
|
|
import cn.com.taiji.core.manager.tools.issue.IssueTools; |
|
|
|
import cn.com.taiji.core.manager.tools.issue.QdCallUtil; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.ias.order.OrderAuditRequest; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.ias.order.OrderAuditResponse; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; |
|
|
|
import cn.com.taiji.core.repo.jpa.basic.QtkBrandInfoRepo; |
|
|
|
import cn.com.taiji.ias.dict.DataType; |
|
|
|
import cn.com.taiji.ias.model.ServiceLogEvent; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
@Service |
|
|
|
public class OrderAuditManager extends AbstractOrderManager<OrderAuditRequest> { |
|
|
|
|
|
|
|
public static final String STAFF = "staff"; |
|
|
|
public static final String ORDER_EXT = "ext"; |
|
|
|
public OrderAuditManager() { |
|
|
|
super(DataType.ORDER_AUDIT); |
|
|
|
} |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private QtkBrandInfoRepo qtkBrandinfoRepo; |
|
|
|
@Autowired |
|
|
|
private QdCallUtil qdCallUtil; |
|
|
|
|
|
|
|
@Override |
|
|
|
protected String getDataId(OrderAuditRequest req) { |
|
|
|
return ""; |
|
|
@@ -38,13 +53,11 @@ public class OrderAuditManager extends AbstractOrderManager<OrderAuditRequest> { |
|
|
|
@Override |
|
|
|
protected void businessValidateInternal(ErrorMsgBuilder builder, OrderAuditRequest request, |
|
|
|
ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { |
|
|
|
if (hasText(request.getStaffId())) { |
|
|
|
Staff staff = staffRepo.findByStaffId(request.getStaffId()); |
|
|
|
if (staff == null) { |
|
|
|
throw GlyServiceError.FORMAT_VALIDATE_ERR.toHandleException("员工不存在"); |
|
|
|
} |
|
|
|
dataStream.put(STAFF, staff); |
|
|
|
Staff staff = staffRepo.findByStaffId(request.getStaffId()); |
|
|
|
if (staff == null) { |
|
|
|
throw GlyServiceError.FORMAT_VALIDATE_ERR.toHandleException("员工不存在"); |
|
|
|
} |
|
|
|
dataStream.put(STAFF, staff); |
|
|
|
IssueOrderinfo order = checkOrder(request.getOrderNo()); |
|
|
|
if (!IssueOrderStatus.NORMAL.equals(order.getOrderStatus())) { |
|
|
|
throw newBusinessException("当前订单不能审核,订单状态:" + order.getOrderStatus().getStatus()); |
|
|
@@ -52,6 +65,9 @@ public class OrderAuditManager extends AbstractOrderManager<OrderAuditRequest> { |
|
|
|
if (!IssueOrderStep.WAITING_AUDIT.equals(order.getOrderStep())) { |
|
|
|
throw newBusinessException("当前订单步骤不能审核,订单步骤:" + order.getOrderStep().getStep()); |
|
|
|
} |
|
|
|
if (!staff.getOpenId().equals(order.getReceiver())) { |
|
|
|
throw newBusinessException("审核订单的人与领取订单的人不一致,不允许审核"); |
|
|
|
} |
|
|
|
dataStream.put(ORDER, order); |
|
|
|
} |
|
|
|
|
|
|
@@ -60,74 +76,87 @@ public class OrderAuditManager extends AbstractOrderManager<OrderAuditRequest> { |
|
|
|
Map<String, Object> dataStream) throws ServiceHandleException { |
|
|
|
IssueOrderinfo order = (IssueOrderinfo) dataStream.get(ORDER); |
|
|
|
Staff staff = (Staff) dataStream.get(STAFF); |
|
|
|
// ServiceType serviceType; |
|
|
|
// CsmsnOrderinfo order = orderInfoRepo.findByOrderNo(req.getOrderNo()); |
|
|
|
// if (req.getAuditStatus()) { |
|
|
|
// if (OrderSourceEnum.CHANNEL.equals(order.getOrderSource())){//20250115加判断条件,如果是渠道,审核通过,是待支付 |
|
|
|
// //20250408修改,线上不需要支付,审核通过直接待签约 |
|
|
|
// if (order.getPromotionModes().equals(1)) {// 线上 |
|
|
|
// order.setOrderStep(IssueOrderStep.ORDER_STEP_3.getCode());//待签约 |
|
|
|
// } else {//线下 |
|
|
|
// order.setOrderStep(IssueOrderStep.ORDER_STEP_4.getCode());//线下待支付 |
|
|
|
// } |
|
|
|
// }else { |
|
|
|
// if (order.getWhetherToMail()) { |
|
|
|
// order.setOrderStep(IssueOrderStep.ORDER_STEP_8.getCode()); |
|
|
|
// } else { |
|
|
|
// order.setOrderStep(IssueOrderStep.ORDER_STEP_10.getCode()); |
|
|
|
// } |
|
|
|
// } |
|
|
|
// serviceType = ServiceType.EXAMINATIONPASS; |
|
|
|
// } else { |
|
|
|
// order.setOrderStep(IssueOrderStep.ORDER_STEP_7.getCode()); |
|
|
|
// serviceType = ServiceType.NOEXAMINATIONPASS; |
|
|
|
// } |
|
|
|
// String staffId = req.getStaffId(); |
|
|
|
// AccountInfo staff = accountInfoRepo.findByAccount(staffId); |
|
|
|
// order.setAuditOpId(staff.getOpenId()); |
|
|
|
// order.setAuditTime(LocalDateTime.now()); |
|
|
|
// order.setArtificialStatus(1); |
|
|
|
// CsmsnOrderinfoExt ext = orderInfoExtRepo.findByOrderInfoId(order.getOrderNo()); |
|
|
|
// String auditFailureCase = hasText(ext.getAuditReason())?ext.getAuditReason():""; |
|
|
|
// ext.setAuditFailureCase(req.getReason()); |
|
|
|
// orderInfoRepo.save(order); |
|
|
|
// orderInfoExtRepo.save(ext); |
|
|
|
// // 保存业务日志 |
|
|
|
// bizServiceLog(staff.getOpenId(), serviceType, order, order.getOrderNo()); |
|
|
|
// // 20250401增加保存车型公告表 |
|
|
|
// logger.info(auditFailureCase); |
|
|
|
// if (req.getAuditStatus() && auditFailureCase.contains("申办车型未找到匹配范围")) { |
|
|
|
// logger.info("进入保存公告表"); |
|
|
|
// executor.execute(() -> { |
|
|
|
// try { |
|
|
|
// VehicleBrandInfo vehicleBrandInfo = new VehicleBrandInfo(); |
|
|
|
// vehicleBrandInfo.setVehicleType(order.getVehicleType()); |
|
|
|
// String vehicleModel = issueOrderVerificationRuleManagerImpl.extractFirstEnAlphabetNumberStr(ext.getVehicleModel()); |
|
|
|
// vehicleBrandInfo.setVehicleModel(vehicleModel); |
|
|
|
// vehicleBrandInfo.setVin(ext.getVehicleVin().substring(0,8)); |
|
|
|
// vehicleBrandInfo.setCaculateStatus(1); |
|
|
|
// Integer vehicleClass = order.getVehicleClass();//车型 |
|
|
|
// if (order.getVanType()==1){ |
|
|
|
// vehicleBrandInfo.setPassengerChargeTypeMax(vehicleClass); |
|
|
|
// vehicleBrandInfo.setPassengerChargeTypeMin(vehicleClass); |
|
|
|
// }else { |
|
|
|
// vehicleBrandInfo.setVanChargeTypeMax(vehicleClass); |
|
|
|
// vehicleBrandInfo.setVanChargeTypeMin(vehicleClass); |
|
|
|
// } |
|
|
|
// vehicleBrandInfoRepo.save(vehicleBrandInfo); |
|
|
|
// logger.info("车辆model {},车型{},vin {}",vehicleModel,vehicleClass,ext.getVehicleVin()); |
|
|
|
// } catch (Exception e){ |
|
|
|
// logger.error("审核通过,车型公告表保存失败:"+e.getMessage()); |
|
|
|
// } |
|
|
|
// }); |
|
|
|
// } |
|
|
|
if (request.getAuditStatus()) { |
|
|
|
//审核通过 |
|
|
|
if (SourceType.CHANNEL.equals(order.getOrderSource())) { |
|
|
|
//20250408修改,线上不需要支付,审核通过直接待签约 |
|
|
|
if (order.getPromotionModes().equals(1)) {// 线上 |
|
|
|
order.setOrderStep(IssueOrderStep.ORDER_PAID);//待签约 |
|
|
|
} else if (order.getPromotionModes().equals(2)) {//线下 |
|
|
|
order.setOrderStep(IssueOrderStep.VEHICLE_UPLOAD);//线下待支付 |
|
|
|
} else {//线上、线下 |
|
|
|
IssueProduct product = issueProductRepo.findByReleaseId(order.getProductId()); |
|
|
|
if (product.getNeedPay()) { |
|
|
|
order.setOrderStep(IssueOrderStep.VEHICLE_UPLOAD); |
|
|
|
} else { |
|
|
|
order.setOrderStep(IssueOrderStep.ORDER_PAID); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (!ShippingStatus.NONE.equals(order.getShippingStatus())) {//需要邮寄 |
|
|
|
order.setOrderStep(IssueOrderStep.WAITING_SEND); |
|
|
|
order.setShippingStatus(ShippingStatus.WAIT_SHIPPING); |
|
|
|
} else { |
|
|
|
order.setOrderStep(IssueOrderStep.WAITING_ACTIVE); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
order.setOrderStep(IssueOrderStep.AUDIT_FAIL); |
|
|
|
} |
|
|
|
order.setAuditOpenId(staff.getOpenId()); |
|
|
|
order.setAuditTime(LocalDateTime.now()); |
|
|
|
order.setArtificialStatus(1); |
|
|
|
orderInfoRepo.merge(order); |
|
|
|
IssueOrderinfoExt ext = orderInfoExtRepo.findByOrderNo(order.getOrderNo()); |
|
|
|
ext.setAuditFailureCase(request.getReason()); |
|
|
|
orderInfoExtRepo.merge(ext); |
|
|
|
dataStream.put(ORDER_EXT, ext); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void onSuccessInternal(OrderAuditRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { |
|
|
|
IssueOrderinfoExt ext = (IssueOrderinfoExt) dataStream.get(ORDER_EXT); |
|
|
|
IssueOrderinfo order = (IssueOrderinfo) dataStream.get(ORDER); |
|
|
|
//不影响业务流程,全部异步执行 |
|
|
|
//新增公告表 |
|
|
|
String auditFailureCase = hasText(ext.getAuditReason()) ? ext.getAuditReason() : ""; |
|
|
|
if (req.getAuditStatus() && auditFailureCase.contains("申办车型未找到匹配范围")) { |
|
|
|
executor.execute(() -> { |
|
|
|
QtkBrandInfo brandinfo = new QtkBrandInfo(); |
|
|
|
brandinfo.setVehicleType(order.getVehicleType()); |
|
|
|
String vehicleModel = IssueTools.extractFirstEnAlphabetNumberStr(ext.getVehicleModel()); |
|
|
|
brandinfo.setVehicleModel(vehicleModel); |
|
|
|
brandinfo.setVin(ext.getVehicleVin().substring(0, 8)); |
|
|
|
brandinfo.setCaculateStatus(1); |
|
|
|
Integer vehicleClass = order.getVehicleClass();//车型 |
|
|
|
if (order.getVanType() == 1) { |
|
|
|
brandinfo.setPassengerChargeTypeMax(vehicleClass); |
|
|
|
brandinfo.setPassengerChargeTypeMin(vehicleClass); |
|
|
|
} else { |
|
|
|
brandinfo.setVanChargeTypeMax(vehicleClass); |
|
|
|
brandinfo.setVanChargeTypeMin(vehicleClass); |
|
|
|
} |
|
|
|
logger.info("车辆model {},车型{},vin {}", vehicleModel, vehicleClass, ext.getVehicleVin()); |
|
|
|
qtkBrandinfoRepo.persist(brandinfo); |
|
|
|
}); |
|
|
|
} |
|
|
|
//通知渠道 |
|
|
|
if (SourceType.CHANNEL.equals(order.getOrderSource())) { |
|
|
|
executor.execute(() -> { |
|
|
|
// qdCallUtil(order, ext) |
|
|
|
qdCallUtil.callBackQd(order, req.getReason()); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected AbstractSignTypeResponse getRes(OrderAuditRequest req, ServiceLogEvent event, |
|
|
|
Map<String, Object> dataStream) throws ServiceHandleException { |
|
|
|
AbstractIssueResponse res = new AbstractIssueResponse(); |
|
|
|
res.setReceiveTime(getReceiveTimeStr(event)); |
|
|
|
protected OrderAuditResponse getRes(OrderAuditRequest req, ServiceLogEvent event, |
|
|
|
Map<String, Object> dataStream) throws ServiceHandleException { |
|
|
|
// AbstractIssueResponse res = new AbstractIssueResponse(); |
|
|
|
// res.setReceiveTime(getReceiveTimeStr(event)); |
|
|
|
IssueOrderinfo order = (IssueOrderinfo) dataStream.get(ORDER); |
|
|
|
OrderAuditResponse res = new OrderAuditResponse(); |
|
|
|
res.setId(order.getId()); |
|
|
|
return res; |
|
|
|
} |
|
|
|
} |