瀏覽代碼

ias 签约信息变更收集信息

master
chenchaod 3 天之前
父節點
當前提交
8488c15685

+ 99
- 0
gly-base-core/src/main/java/cn/com/taiji/core/entity/ass/AssSignChange.java 查看文件

@@ -0,0 +1,99 @@
package cn.com.taiji.core.entity.ass;

import cn.com.taiji.common.entity.StringPropertyUUIDEntity;
import cn.com.taiji.core.entity.dict.basic.UseUserType;
import cn.com.taiji.core.model.comm.protocol.valid.RegexConstant;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import javax.validation.constraints.*;
import java.time.LocalDateTime;

/**
* @Author:ChenChao
* @Date:2025/9/19 9:41
* @Filename:AssSignChange
* @description:
*/
@Getter
@Setter
@Entity
@Table(name = "ASS_SIGN_CHANGE")
public class AssSignChange extends StringPropertyUUIDEntity {
@NotBlank
@Size(max = 32)
@Column(name = "ORDER_NO")
private String orderNo;//售后订单编号

@NotBlank
@Size(max = 64)
@Column(name = "VEHICLE_PLATE")
private String vehiclePlate;//车牌号;
@NotBlank
@Size(max = 255)
@Column(name = "VEH_POS_IMGURL")
private String vehPosImgUrl;//行驶证正面图片地址;
@NotBlank
@Size(max = 255)
@Column(name = "VEH_NEG_IMGURL")
private String vehNegImgUrl;//行驶证反面图片地址;
@NotBlank
@Column(name = "VEHICLE_NAME")
private String vehicleName;//行驶证姓名
@NotNull
@Column(name = "USE_USER_TYPE")
@Enumerated(EnumType.STRING)
private UseUserType useUserType;//车辆使用类型;
@NotBlank
@Pattern(message = "VIN格式不正确", regexp = RegexConstant.vinRegexp)
@Size(message = "VIN码最大长度为50字符", max = 50)
@Column(name = "VIN")
private String vin;// vin码
@NotBlank
@Size(max = 255)
@Column(name = "ENGINE_NUM")
private String engineNum;// 发动机编号
@NotBlank
@Size(max = 255)
@Column(name = "VEHICLE_TYPE")
private String vehicleType;// 行驶证车辆类型
@NotBlank
@Size(max = 255)
@Column(name = "VEHICLE_MODEL")
private String vehicleModel;// 行驶证车辆品牌
@NotNull
@Column(name = "APPROVED_COUNT")
private Integer approvedCount;// 核定载人数
@NotNull
@Column(name = "TOTAL_MASS")
private Integer totalMass;// 总质量
@Column(name = "MAINTENACE_MASS")
private Integer maintenaceMass;// 整备质量
@Column(name = "PERMITTED_WEIGHT")
private Integer permittedWeight;// 核定载质量
@Column(name = "PERMITTED_TOW_WEIGHT")
private Integer permittedTowWeight;// 准牵引总质量
@NotBlank
@Size(max = 255)
@Column(name = "VEHICLE_DIMENSIONS")
private String vehicleDimensions;// 车辆尺寸
@NotBlank
@Size(max = 20)
@Column(name = "ISSUE_DATE")
private String issueDate;// 发证日期
@NotBlank
@Size(max = 255)
@Column(name = "VEH_BODY_URL")
private String vehBodyUrl;// 车身45°照片
@NotBlank
@Column(name = "REGISTER_DATE")
private String registerDate;// 注册日期
@NotNull
@Column(name = "INSERT_TIME")
private LocalDateTime insertTime = LocalDateTime.now();//入库时间
@NotNull
@Column(name = "UPDATE_TIME")
private LocalDateTime updateTime = LocalDateTime.now();//更新时间

}

+ 3
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ias/ass/SignChangeCollectResponse.java 查看文件

@@ -13,4 +13,7 @@ import lombok.Setter;
@Getter
@Setter
public class SignChangeCollectResponse extends AbstractSignTypeResponse {
private String receiveTime;
private String orderNo;
private String id; //订单表主键Id,给iaw客户端返回记录日志
}

+ 14
- 0
gly-base-core/src/main/java/cn/com/taiji/core/repo/jpa/ass/AssSignChangeRepo.java 查看文件

@@ -0,0 +1,14 @@
package cn.com.taiji.core.repo.jpa.ass;

import cn.com.taiji.common.repo.jpa.AbstractJpaRepo;
import cn.com.taiji.core.entity.ass.AssSignChange;

/**
* @Author:ChenChao
* @Date:2025/9/19 10:02
* @Filename:AssSignChangeRepo
* @description:
*/
public interface AssSignChangeRepo extends AbstractJpaRepo<AssSignChange, String> {

}

+ 58
- 3
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/ass/SignChangeCollectManager.java 查看文件

@@ -2,10 +2,15 @@ package cn.com.taiji.ias.manager.ass;

import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.core.entity.ass.AssOrderinfo;
import cn.com.taiji.core.entity.ass.AssSignChange;
import cn.com.taiji.core.entity.basic.QtkVehicleInfo;
import cn.com.taiji.core.entity.dict.ass.AssOrderStep;
import cn.com.taiji.core.entity.dict.basic.UseUserType;
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse;
import cn.com.taiji.core.model.comm.protocol.ias.ass.SignChangeCollectRequest;
import cn.com.taiji.core.model.comm.protocol.ias.ass.SignChangeCollectResponse;
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder;
import cn.com.taiji.core.repo.jpa.ass.AssSignChangeRepo;
import cn.com.taiji.ias.dict.DataType;
import cn.com.taiji.ias.manager.audit.VerificationRuleManager;
import cn.com.taiji.ias.model.ServiceLogEvent;
@@ -24,6 +29,9 @@ import java.util.Map;
*/
@Service
public class SignChangeCollectManager extends AbstractAssManager<SignChangeCollectRequest>{
@Autowired
private AssSignChangeRepo assSignChangeRepo;

public SignChangeCollectManager() {
super(DataType.SIGNCHANGE_COLLECT);
}
@@ -45,10 +53,53 @@ public class SignChangeCollectManager extends AbstractAssManager<SignChangeColle
protected void businessValidateInternal(ErrorMsgBuilder builder, SignChangeCollectRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException {

AssOrderinfo assOrderinfo = orderInfoRepo.findByOrderNo(req.getOrderNo());
QtkVehicleInfo vehicleInfo = vehicleInfoRepo.findByVehicleId(assOrderinfo.getVehicleId());
if (assOrderinfo == null) {
throw newBusinessException("订单不存在");
}
throwBisExceptionOn(!assOrderinfo.getVehiclePlate().equals(req.getVehiclePlate()),"车牌不匹配");
StringBuilder sBuilder = new StringBuilder();
//行驶证OCR核验
checkCarOcr(req, assOrderinfo, sBuilder);
//vin码比对
if (!vehicleInfo.getVin().equals(req.getVin())){
sBuilder.append(",此次车辆VIN码{"+req.getVin()+"}与之前VIN码{"+vehicleInfo.getVin()+"}不一致");
}
if (hasText(sBuilder.toString())) {
//人工审核
assOrderinfo.setOrderStep(AssOrderStep.WAITING_AUDIT);
}
dataStream.put(ORDER,assOrderinfo);
}

@Override
protected void persistInternal(SignChangeCollectRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException {
AssOrderinfo assOrderinfo = (AssOrderinfo) dataStream.get(ORDER);
//收集信息保存
AssSignChange assSignChange = new AssSignChange();
assSignChange.setOrderNo(assOrderinfo.getOrderNo());
assSignChange.setVehiclePlate(req.getVehiclePlate());
assSignChange.setVehPosImgUrl(req.getVehPosImgUrl());
assSignChange.setVehNegImgUrl(req.getVehNegImgUrl());
assSignChange.setVehicleName(req.getVehicleName());
assSignChange.setUseUserType(UseUserType.valueOfCode(req.getUseUserType()));
assSignChange.setVin(req.getVin());
assSignChange.setEngineNum(req.getEngineNum());
assSignChange.setVehicleType(req.getVehicleType());
assSignChange.setVehicleModel(req.getVehicleModel());
assSignChange.setTotalMass(req.getTotalMass());
assSignChange.setTotalMass(req.getTotalMass());
assSignChange.setMaintenaceMass(req.getMaintenaceMass());
assSignChange.setPermittedWeight(req.getPermittedWeight());
assSignChange.setPermittedTowWeight(req.getPermittedTowWeight());
assSignChange.setVehicleDimensions(req.getVehicleDimensions());
assSignChange.setIssueDate(req.getIssueDate());
assSignChange.setVehBodyUrl(req.getVehBodyUrl());
assSignChange.setRegisterDate(req.getRegisterDate());
assSignChangeRepo.persist(assSignChange);
}

private void checkCarOcr(SignChangeCollectRequest req, AssOrderinfo assOrderinfo, StringBuilder sBuilder) {
QtkVehicleInfo vehicleInfo = vehicleInfoRepo.findByVehicleId(assOrderinfo.getVehicleId());
CarOcrCheck carOcrCheck = new CarOcrCheck();
carOcrCheck.setVehiclePlate(req.getVehiclePlate());
@@ -63,11 +114,15 @@ public class SignChangeCollectManager extends AbstractAssManager<SignChangeColle
carOcrCheck.setTotalMass(req.getTotalMass());
carOcrCheck.setVehNegImgUrl(req.getVehNegImgUrl());
verificationRuleManager.ocrVarifyVehicle(carOcrCheck, sBuilder);

}

@Override
protected AbstractSignTypeResponse getRes(SignChangeCollectRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException, IOException {
return null;
protected SignChangeCollectResponse getRes(SignChangeCollectRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException, IOException {
AssOrderinfo assOrderinfo = (AssOrderinfo) dataStream.get(ORDER);
SignChangeCollectResponse response = new SignChangeCollectResponse();
response.setId(assOrderinfo.getId());
response.setOrderNo(assOrderinfo.getOrderNo());
response.setReceiveTime(getReceiveTimeStr(event));
return response;
}
}

Loading…
取消
儲存