Pārlūkot izejas kodu

ias 支持时间带"T"和不带"T"

master
chenchaod pirms 3 dienas
vecāks
revīzija
267fcde716

+ 1
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ias/ass/VehicleChangeApllyRequest.java Parādīt failu

@@ -24,6 +24,7 @@ public class VehicleChangeApllyRequest extends AbstractSignTypeRequest<VehicleCh
super(AssServiceCmd.VEHICLECHANGE);
}

private Boolean isSend;//是否邮寄
private String staffNum;
private String openId;
@NotBlank

+ 41
- 0
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/config/FlexibleLocalDateTimeDeserializer.java Parādīt failu

@@ -0,0 +1,41 @@
package cn.com.taiji.ias.config;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class FlexibleLocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {

private static final DateTimeFormatter[] FORMATS = {
// DateTimeFormatter.ISO_LOCAL_DATE_TIME, // yyyy-MM-dd'T'HH:mm:ss
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"), // yyyy-MM-dd HH:mm:ss
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"), // 可选:支持不带秒的 ISO
// DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm") // 可选:支持不带秒的空格格式
};

@Override
public LocalDateTime deserialize(JsonParser p, DeserializationContext context) throws IOException {
String text = p.getValueAsString().trim();
if (text == null || text.isEmpty()) {
return null;
}

for (DateTimeFormatter formatter : FORMATS) {
try {
return LocalDateTime.parse(text, formatter);
} catch (DateTimeParseException e) {
// 尝试下一个格式
}
}

// 如果所有格式都失败,抛出异常
throw context.weirdStringException(text, LocalDateTime.class,
"无法解析为任何支持的 LocalDateTime 格式。支持格式: " +
"yyyy-MM-dd'T'HH:mm:ss, yyyy-MM-dd HH:mm:ss");
}
}

+ 6
- 0
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/config/JsonConfig.java Parādīt failu

@@ -2,6 +2,7 @@ package cn.com.taiji.ias.config;

import cn.com.taiji.common.pub.TimeTools;
import cn.com.taiji.common.pub.json.JsonTools;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@@ -9,12 +10,17 @@ import com.fasterxml.jackson.databind.ObjectMapper;

import cn.com.taiji.common.pub.json.ObjectMapperBuilder;

import java.time.LocalDateTime;

@Configuration
public class JsonConfig {
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper =
ObjectMapperBuilder.create().setLocalDateTimeFormatter(TimeTools.DATE_TIME_FORMATTER).build();
SimpleModule simpleModule = new SimpleModule();
simpleModule.addDeserializer(LocalDateTime.class,new FlexibleLocalDateTimeDeserializer());
objectMapper.registerModule(simpleModule);
JsonTools.customerMapper(objectMapper);
return objectMapper;
}

+ 22
- 0
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/AbstractIasManager.java Parādīt failu

@@ -3,6 +3,7 @@ package cn.com.taiji.ias.manager;
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.basic.QtkCardInfo;
import cn.com.taiji.core.entity.dict.issue.*;
import cn.com.taiji.core.entity.issue.IssueOrderPay;
import cn.com.taiji.core.entity.issue.IssueOrderRefund;
@@ -15,6 +16,10 @@ import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest;
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.model.comm.protocol.ods.oqs.issue.OqsCardQueryRequest;
import cn.com.taiji.core.model.comm.protocol.ods.oqs.issue.OqsCardQueryResponse;
import cn.com.taiji.core.model.comm.protocol.ods.oqs.issue.OqsIssueOrderQueryRequest;
import cn.com.taiji.core.model.comm.protocol.ods.oqs.issue.OqsIssueOrderQueryResponse;
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;
@@ -31,6 +36,7 @@ import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;

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

public abstract class AbstractIasManager<T extends AbstractSignTypeRequest<?>> extends AbstractHandleManager<T> {
@@ -170,4 +176,20 @@ public abstract class AbstractIasManager<T extends AbstractSignTypeRequest<?>> e

}

//发行:校验车牌是否已开卡
protected void validVehiclePlate(String vehiclePlate, Integer vehiclePlateColor) throws ServiceHandleException {
OqsCardQueryRequest req = new OqsCardQueryRequest();
req.setVehicleId(vehiclePlate + "_" + vehiclePlateColor);
OqsCardQueryResponse res = jsonPostRepeat(req);
List<QtkCardInfo> qtkCardInfos = res.getQtkCardInfos();
throwBisExceptionOn(qtkCardInfos != null && !qtkCardInfos.isEmpty(), "此车牌号已开卡!");
}
//发行:检验老库订单
protected void checkOldOrder(String vehiclePlate, Integer vehiclePlateColor) throws ServiceHandleException {
OqsIssueOrderQueryRequest req = new OqsIssueOrderQueryRequest();
req.setVehicleId(vehiclePlate + "_" + vehiclePlateColor);
OqsIssueOrderQueryResponse res = jsonPostRepeat(req);
throwBisExceptionOn(res.getIsExist(), "当前车辆存在未完成订单");
}

}

+ 90
- 22
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/vehicleChange/VehicleChangeApplyManager.java Parādīt failu

@@ -14,7 +14,8 @@ import cn.com.taiji.core.entity.dict.ass.AssOrderStatus;
import cn.com.taiji.core.entity.dict.ass.AssOrderStep;
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.dict.issue.*;
import cn.com.taiji.core.entity.issue.*;
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;
@@ -26,6 +27,10 @@ import cn.com.taiji.core.repo.jpa.ass.AssAgencyConfigRepo;
import cn.com.taiji.core.repo.jpa.ass.AssVehicleInfoChangeRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkCardInfoRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkObuInfoRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueOrderinfoRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueProductPayRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueProductPromotionRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueProductRepo;
import cn.com.taiji.ias.dict.DataType;
import cn.com.taiji.ias.manager.ass.AbstractAssManager;
import cn.com.taiji.ias.model.ServiceLogEvent;
@@ -49,6 +54,14 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA

@Autowired
private AssVehicleInfoChangeRepo assVehicleInfoChangeRepo;
@Autowired
private IssueProductPayRepo issueProductPayRepo;
@Autowired
private IssueOrderinfoRepo issueorderInfoRepo;
@Autowired
private IssueProductRepo issueProductRepo;
@Autowired
private IssueProductPromotionRepo promotionRepo;

public VehicleChangeApplyManager() {
super(DataType.VEHICLE_CHANGE_APPLY);
@@ -62,6 +75,7 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
private static final String ZC_CARD = "zcCard";
private static final String ZC_OBU = "zcOBU";
private static final String CHANGE_INFO = "zcCardInfo";
private static final String PRODUCT = "product";

@Autowired
private AssAgencyConfigRepo agencyConfigRepo;
@@ -127,25 +141,9 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
if (cardInfo.getCardId().startsWith("9901")) {
throw newBusinessException("在中国ETC小程序操作过户/取消订单后再在九州小程序进行新办");
}
//更换车牌,校验新车牌
//更换车牌,新车牌相关校验
if (req.getOldVehicleId().equals(req.getVehiclePlate()+"_"+req.getVehiclePlateColor())){
VehiclePlateCheckResponse res = checkVehiclePlate(req.getVehiclePlate(), req.getVehiclePlateColor());
throwBisExceptionOn(res.getResult() != 4, res.getInfo());
// 工建行储值卡引导用户到银行线下网点办理。 todo
AssAgencyConfig agencyConfig = agencyConfigRepo.findByAgencyId(cardInfo.getAgencyId());
if (agencyConfig == null) {
throw newBusinessException("渠道配置信息不存在");
}
if (!agencyConfig.getVehicleChange()) {
if (SourceType.CHANNEL.equals(req.getOrderSource())){
throw newBusinessException("渠道不支持车辆信息变更");
}else{
if (!hasText(req.getProductId())){
throw newBusinessException("需要选择产品办理");
}
}
// throw newBusinessException(agencyConfig.getDealType() == 1?"渠道不支持车辆信息变更,请注销新办":agencyConfig.getDeviceChangeNotice());
}
validNewCar(req, cardInfo,dataStream);
dataStream.put(PLATE_CHANGEFLAG, true);
}else {
dataStream.put(PLATE_CHANGEFLAG, false);
@@ -153,14 +151,44 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA

}

private void validNewCar(VehicleChangeApllyRequest req, QtkCardInfo cardInfo,Map<String, Object> dataStream) throws ServiceHandleException {
// 工建行储值卡引导用户到银行线下网点办理。 todo
AssAgencyConfig agencyConfig = agencyConfigRepo.findByAgencyId(cardInfo.getAgencyId());
if (agencyConfig == null) {
throw newBusinessException("渠道配置信息不存在");
}
if (!agencyConfig.getVehicleChange() && !hasText(req.getProductId())) {
throw newBusinessException("需要选择产品办理");
}
//校验产品
if (hasText(req.getProductId())) {
IssueProduct product = issueProductRepo.findByReleaseId(req.getProductId());
IssueProductPromotion promotion = promotionRepo.findByReleaseId(req.getProductId());
if (product == null || promotion == null) {
throw newBusinessException("当前选择的产品不存在");
}
dataStream.put(PRODUCT, product);
}
VehiclePlateCheckResponse res = checkVehiclePlate(req.getVehiclePlate(), req.getVehiclePlateColor());
throwBisExceptionOn(res.getResult() != 4, res.getInfo());
//校验新车是否开过卡
validVehiclePlate(req.getVehiclePlate(), req.getVehiclePlateColor());
// 校验车牌是否有老订单
checkOldOrder(req.getVehiclePlate(), req.getVehiclePlateColor());
//校验本地发行订单
IssueOrderinfo order = issueorderInfoRepo.findNormalByVehicleId(req.getVehiclePlate() + "_" + req.getVehiclePlateColor());
if (order != null) throw newBusinessException("新车辆存在发行订单,不可办理");
}

@Override
protected void persistInternal(VehicleChangeApllyRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException {
QtkVehicleInfo vehicleInfo = (QtkVehicleInfo) dataStream.get(VEHICLE_INFO);
QtkCustomerInfo customerInfo = customerInfoRepo.findByCustomerId(vehicleInfo.getCustomerId());
QtkObuInfo qtkObuInfo = (QtkObuInfo) dataStream.get(ZC_OBU);
QtkCardInfo qtkCardInfo = (QtkCardInfo) dataStream.get(ZC_CARD);
IssueProduct product = (IssueProduct) dataStream.get(PRODUCT);

//售后表
//=====================================================售后表========================================
AssOrderinfo order = new AssOrderinfo();
LocalDateTime now = LocalDateTime.now();
order.setCardId(qtkCardInfo.getCardId());
@@ -198,7 +226,7 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
order.setOpenId(req.getOpenId());
}

//车辆信息
//=========================================车辆信息======================================================
AssVehicleInfoChange changeInfo = new AssVehicleInfoChange();
changeInfo.setOrderNo(order.getOrderNo());
changeInfo.setChangeType((Boolean) dataStream.get(PLATE_CHANGEFLAG));
@@ -255,7 +283,15 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA
//===========申请人结束=================
changeInfo.setProductId(req.getProductId());
changeInfo.setOldType(vehicleInfo.getType());

if (product != null) {
changeInfo.setAccountId(product.getAgencyId());
changeInfo.setShippingStatus(req.getIsSend()?ShippingStatus.WAIT_SHIPPING:ShippingStatus.NONE);
changeInfo.setProductId(product.getReleaseId());
changeInfo.setProductName(product.getProductName());
changeInfo.setAmount(product.getAmount());
//创建支付单
createPayOrder(order, product);
}
//ocr信息比对
String failReson = checkOcr(req, dataStream);
order.setAuditReason(failReson);
@@ -266,6 +302,38 @@ public class VehicleChangeApplyManager extends AbstractAssManager<VehicleChangeA

}

private void createPayOrder(AssOrderinfo order, IssueProduct product) {
List<IssueProductPay> productPays = issueProductPayRepo.findByFeeCategoryAndReleaseId(FeeCategory.HANDLE, product.getReleaseId());
// for (IssueProductPay productPay : productPays) {
// IssueOrderPay orderPay = new IssueOrderPay();
// orderPay.setOrderNo(order.getOrderNo());
// orderPay.setPayType(OrderPayType.valueOf(productPay.getFeeType()));
//// orderPay.setPayOrderNo(getPayOrderId(orderPay.getPayType(), order.getAccountId()));
// orderPay.setPayStatus(OrderPayStatus.UNPAY);
// Long fee = 0l;
// switch (orderPay.getPayType()) {
// case HANDLE:
// fee = product.getHandleFee();
// break;
// case MARGIN:
// fee = product.getMarginFee();
// break;
// case PRESTORE:
// fee = product.getPrestoreFee();
// break;
// case PROCESS:
// fee = product.getProcessFee();
// break;
// default:
// break;
// }
// payTools.createPayOrder(order.getOrderNo(),OrderType.ISSUE, fee, productPay.getPayConfigId(), req.getH5Type(), order);
// orderPay.setPayConfigId(productPay.getPayConfigId());
//// if (orderPay.getFee() > 0)
//// orderPays.add(orderPay);
// }
}

@Override
protected void onSuccessInternal(VehicleChangeApllyRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException {
AssOrderinfo assOrderinfo = (AssOrderinfo) dataStream.get(ORDER);

+ 1
- 13
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/OrderInitManager.java Parādīt failu

@@ -197,20 +197,7 @@ public class OrderInitManager extends AbstractOrderManager<OrderInitRequest> {
return res;
}

private void checkOldOrder(String vehiclePlate, Integer vehiclePlateColor) throws ServiceHandleException {
OqsIssueOrderQueryRequest req = new OqsIssueOrderQueryRequest();
req.setVehicleId(vehiclePlate + "_" + vehiclePlateColor);
OqsIssueOrderQueryResponse res = jsonPostRepeat(req);
throwBisExceptionOn(res.getIsExist(), "当前车辆存在未完成订单");
}

private void validVehiclePlate(String vehiclePlate, Integer vehiclePlateColor) throws ServiceHandleException {
OqsCardQueryRequest req = new OqsCardQueryRequest();
req.setVehicleId(vehiclePlate + "_" + vehiclePlateColor);
OqsCardQueryResponse res = jsonPostRepeat(req);
List<QtkCardInfo> qtkCardInfos = res.getQtkCardInfos();
throwBisExceptionOn(qtkCardInfos != null && !qtkCardInfos.isEmpty(), "此车牌号已开卡!");
}

private void checkLocalOrder(OrderInitRequest request) throws ServiceHandleException {
IssueOrderinfo order = orderInfoRepo.findNormalByVehicleId(request.getVehiclePlate() + "_" + request.getVehiclePlateColor());
@@ -285,6 +272,7 @@ public class OrderInitManager extends AbstractOrderManager<OrderInitRequest> {
for (IssueProductPay productPay : productPays) {
IssueOrderPay orderPay = new IssueOrderPay();
orderPay.setOrderNo(order.getOrderNo());
orderPay.setOrderType(OrderType.ISSUE);
orderPay.setPayType(OrderPayType.valueOf(productPay.getFeeType()));
orderPay.setPayOrderNo(getPayOrderId(orderPay.getPayType(), order.getAccountId()));
orderPay.setPayStatus(OrderPayStatus.UNPAY);

Notiek ielāde…
Atcelt
Saglabāt