@@ -5,13 +5,12 @@ import cn.com.taiji.common.web.ApiResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.PlateOccupyQueryRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.PlateOccupyQueryResponse; | |||
import cn.com.taiji.managew.api.MyValidController; | |||
import cn.com.taiji.managew.dto.ass.ReleasePlateReviewRequestDTO; | |||
import cn.com.taiji.managew.dto.ass.ReleasePlateViewRequestDTO; | |||
import cn.com.taiji.managew.dto.ass.ReleasePlateViewResponseDTO; | |||
import cn.com.taiji.managew.dto.ass.releasePlate.*; | |||
import cn.com.taiji.managew.manager.ass.ReleasePlateManager; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiOperation; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.validation.annotation.Validated; | |||
import org.springframework.web.bind.annotation.PostMapping; | |||
import org.springframework.web.bind.annotation.RequestBody; | |||
import org.springframework.web.bind.annotation.RequestMapping; | |||
@@ -33,12 +32,12 @@ public class ReleasePlateController extends MyValidController { | |||
@Autowired | |||
private ReleasePlateManager releasePlateManager; | |||
// @ApiOperation("订单申请") | |||
// @PostMapping("/apply") | |||
// public ApiResponse<Void> apply(@Validated @RequestBody RealsePlateRequestDTO req) throws ManagerException { | |||
// releasePlateManager.apply(req); | |||
// return ApiResponse.success(); | |||
// } | |||
@ApiOperation("订单申请") | |||
@PostMapping("/apply") | |||
public ApiResponse<RealsePlateResponseDTO> apply(@Validated @RequestBody RealsePlateRequestDTO req) throws ManagerException { | |||
RealsePlateResponseDTO responseDTO = releasePlateManager.apply(req); | |||
return ApiResponse.of(responseDTO); | |||
} | |||
@ApiOperation("申请解除车牌查询/审核查询") | |||
@PostMapping("/view") | |||
public ApiResponse<ReleasePlateViewResponseDTO> view(@Valid @RequestBody ReleasePlateViewRequestDTO req) throws ManagerException { |
@@ -1,98 +0,0 @@ | |||
package cn.com.taiji.managew.dto.ass; | |||
import cn.com.taiji.core.entity.basic.QtkBlackCard; | |||
import cn.com.taiji.core.entity.basic.QtkBlackObu; | |||
import cn.com.taiji.core.entity.basic.QtkCardInfo; | |||
import cn.com.taiji.core.entity.basic.QtkObuInfo; | |||
import cn.com.taiji.core.entity.dict.ass.AssVehicleRealseStep; | |||
import cn.com.taiji.managew.model.ass.releasePlate.*; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import java.time.LocalDateTime; | |||
import java.util.List; | |||
@Data | |||
@ApiModel(description = "售后订单-解除车牌占用审核查询") | |||
public class ReleasePlateViewResponseDTO { | |||
// @ApiModelProperty(value = "售后订单信息") | |||
// private AssOrderInfoResponseDTO assOrderInfo; | |||
// @ApiModelProperty(value = "售后表订单编号") | |||
// private String orderNo;//售后表订单编号 | |||
// @ApiModelProperty(value = "解除卡所属用户编码") | |||
// private String customerId;//解除卡所属用户编码 | |||
// @ApiModelProperty(value = "解除的卡号;被解除的ETC卡号") | |||
// private String relieveCardId;//解除的卡号;被解除的ETC卡号 | |||
// @ApiModelProperty(value = "解除的签号;被解除的OBU签号") | |||
// private String relieveObuId;//解除的签号;被解除的OBU签号 | |||
// @ApiModelProperty(value = "解除时间") | |||
// private LocalDateTime relieveTime;//解除时间 | |||
// @ApiModelProperty(value = "解除状态;未处理、已处理成功、已处理失败") | |||
// private RelieveStatus relieveStatus;//解除状态;未处理、已处理成功、已处理失败 | |||
// @ApiModelProperty(value = "身份证人像图片地址(申请人)") | |||
// private String userPosImagesUrl;//身份证人像图片地址(申请人) | |||
// @ApiModelProperty(value = "身份证国徽图片地址(申请人)") | |||
// private String userNegImagesUrl;//身份证国徽图片地址(申请人) | |||
// @ApiModelProperty(value = "证件类型;身份证、") | |||
// private IdType userType;//证件类型;身份证、 | |||
// @ApiModelProperty(value = "行驶证正面照片") | |||
// private String vehPosImgUrl;//行驶证正面照片 | |||
// @ApiModelProperty(value = "行驶证反面 照片") | |||
// private String vehNegImgUrl;//行驶证反面 照片 | |||
// @ApiModelProperty(value = "营业执照图片地址") | |||
// private String unitImagesUrl;//营业执照图片地址 | |||
// @ApiModelProperty(value = "授权书图片地址") | |||
// private String proxyUrl;//授权书图片地址 | |||
// @ApiModelProperty(value = "单位证件类型") | |||
// private IdType unitIdType;//单位证件类型 | |||
// @ApiModelProperty(value = "单位名称车辆所有人") | |||
// private String unitName;//单位名称车辆所有人 | |||
// @ApiModelProperty(value = "单位证件编号") | |||
// private String unitId;//单位证件编号 | |||
// @ApiModelProperty(value = "备注") | |||
// private String remark;//备注 | |||
// @ApiModelProperty(value = "创建时间") | |||
// private LocalDateTime insertTime;//创建时间 | |||
// @ApiModelProperty(value = "更新时间") | |||
// private LocalDateTime updateTime;//更新时间 | |||
// @ApiModelProperty(value = "车主证件正面图片") | |||
// private String ownerPosImgUrl;//车主证件正面图片 | |||
// @ApiModelProperty(value = "车主证件反面图片") | |||
// private String ownerNegImgUrl;//车主证件反面图片 | |||
// @ApiModelProperty(value = "车主身份证上名") | |||
// private String ownerName;//车主身份证上名 | |||
// @ApiModelProperty(value = "车主身份证证件号") | |||
// private String ownerIdNum;//车主身份证证件号 | |||
@ApiModelProperty(value = "下单申请时间") | |||
private LocalDateTime applyTime;//下单申请时间 | |||
@ApiModelProperty(value = "售后订单编号") | |||
private String orderNo; | |||
@ApiModelProperty(value = "审核步骤") | |||
private AssVehicleRealseStep step; | |||
@ApiModelProperty(value = "身份证信息") | |||
private ApplyInfo applyInfo; | |||
@ApiModelProperty(value = "行驶证信息") | |||
private DrivingInfo drivingInfo; | |||
@ApiModelProperty(value = "车主信息") | |||
private OwnerInfo ownerInfo; | |||
@ApiModelProperty(value = "单位资料信息") | |||
private UnitInfo unitInfo; | |||
@ApiModelProperty(value = "占用用户信息") | |||
private CustomerInfo customerInfo; | |||
@ApiModelProperty(value = "卡信息") | |||
private QtkCardInfo cardInfo; | |||
@ApiModelProperty(value = "签信息") | |||
private QtkObuInfo obuInfo; | |||
@ApiModelProperty(value = "内容提醒") | |||
private List<String> tap; | |||
@ApiModelProperty(value = "卡黑名单") | |||
private List<QtkBlackCard> cardBlackList; | |||
@ApiModelProperty(value = "签黑名单") | |||
private List<QtkBlackObu> obuBlackList; | |||
} |
@@ -0,0 +1,100 @@ | |||
package cn.com.taiji.managew.dto.ass.releasePlate; | |||
import cn.com.taiji.common.pub.validation.PatternFactory; | |||
import cn.com.taiji.common.valid.ViolationValidator; | |||
import cn.com.taiji.core.dto.AbstractBizRequestDTO; | |||
import cn.com.taiji.core.dto.AbstractStaffBizRequestDTO; | |||
import cn.com.taiji.core.entity.dict.basic.IdType; | |||
import cn.com.taiji.core.entity.dict.basic.PlateColorType; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import cn.com.taiji.core.entity.dict.basic.UserType; | |||
import cn.com.taiji.core.model.comm.protocol.constraint.EnumInteger; | |||
import cn.com.taiji.core.model.comm.protocol.constraint.IntegerConstant; | |||
import cn.com.taiji.core.model.comm.protocol.constraint.VehiclePlate; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import javax.validation.constraints.NotBlank; | |||
import javax.validation.constraints.NotNull; | |||
import javax.validation.constraints.Pattern; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/8/9 9:48 | |||
* @Filename:RealsePlateRequestDTO | |||
* @description: | |||
*/ | |||
@Data | |||
public class RealsePlateRequestDTO extends AbstractStaffBizRequestDTO { | |||
@ApiModelProperty(value = "车牌号", required = true) | |||
@NotBlank | |||
@VehiclePlate | |||
private String vehiclePlate; | |||
@ApiModelProperty(value = "车牌颜色", required = true) | |||
@NotNull | |||
@EnumInteger(enumClazz = PlateColorType.class) | |||
private Integer vehiclePlateColor; | |||
@ApiModelProperty(value = "手机号", required = true) | |||
@NotBlank | |||
@Pattern(regexp = "^1[3-9][0-9]{9}$", message = "手机号格式错误") | |||
private String mobile; | |||
@ApiModelProperty(value = "身份证姓名", required = true) | |||
@NotBlank | |||
private String name; | |||
@ApiModelProperty(value = "证件号码",required = true) | |||
@NotBlank | |||
@Pattern(regexp = PatternFactory.idCodeRegexp, message = "身份证格式错误") | |||
private String userIdNum; | |||
@ApiModelProperty(value = "身份证人像图片地址",required = true) | |||
@NotBlank | |||
private String userPosImagesUrl;//身份证人像图片地址 | |||
@ApiModelProperty(value = "身份证国徽图片地址",required = true) | |||
@NotBlank | |||
private String userNegImagesUrl;//身份证国徽图片地址 | |||
@ApiModelProperty(value = "行驶证正页图片地址",required = true) | |||
@NotBlank | |||
private String vehPosImgUrl;//行驶证正页图片地址 | |||
@ApiModelProperty(value = "行驶证副页图片地址",required = true) | |||
@NotBlank | |||
private String vehNegImgUrl;//行驶证副页图片地址 | |||
@ApiModelProperty(value = "车主姓名,ocr识别行驶证",required = true) | |||
@NotBlank | |||
private String vehicleOwnerName; | |||
//=============================车主信息============================== | |||
@EnumInteger(enumClazz = IdType.class, message = "用户证件类型不合规") | |||
@ApiModelProperty(value = "车主证件类型,不需要上传车主信息不要传值") | |||
@IntegerConstant(values = "101,203") | |||
private Integer ownerIdType;// 车主证件类型 | |||
@ApiModelProperty(value = "车主姓名")//非本人办理,车主名称 | |||
private String ownerName; | |||
@ApiModelProperty(value = "车主证件号")//非本人办理,车主证件号 | |||
private String ownerIdNum; | |||
@ApiModelProperty(value = "车主身份证件人面地址")//非本人办理,车主身份证件人面地址 | |||
private String ownerPosImgUrl; | |||
@ApiModelProperty(value = "车主身份证件国徽地址")//非本人办理,车主身份证件国徽地址 | |||
private String ownerNegImgUrl; | |||
@ApiModelProperty(value = "授权书图片地址") | |||
private String proxyUrl;//授权书图片地址 | |||
@Override | |||
protected void validate(ViolationValidator validator) { | |||
super.validate(validator); | |||
validator.validField("sourceType", getOrderSource() != SourceType.WEB, "申请来源不正确"); | |||
//车主信息必传 | |||
if (ownerIdType != null){ | |||
validator.validFieldNotBlank("proxyUrl",proxyUrl); | |||
validator.validFieldNotBlank("ownerName", ownerName); | |||
validator.validFieldNotBlank("ownerIdNum", ownerIdNum); | |||
validator.validFieldNotBlank("ownerPosImgUrl", ownerPosImgUrl); | |||
if (UserType.PERSONAL_USER == IdType.judgeUserType(ownerIdType)) { | |||
//个人证件有国徽 | |||
validator.validFieldNotBlank("ownerNegImgUrl", ownerNegImgUrl); | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,19 @@ | |||
package cn.com.taiji.managew.dto.ass.releasePlate; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/8/28 20:56 | |||
* @Filename:RealsePlateResponseDTO | |||
* @description: | |||
*/ | |||
@Data | |||
@ApiModel(description = "解除车牌占用申请响应参数") | |||
public class RealsePlateResponseDTO { | |||
@ApiModelProperty(value = "上传车主身份标识,1需要,2不需要") | |||
private Integer flag; | |||
} |
@@ -1,4 +1,4 @@ | |||
package cn.com.taiji.managew.dto.ass; | |||
package cn.com.taiji.managew.dto.ass.releasePlate; | |||
import cn.com.taiji.common.pub.StringTools; | |||
import cn.com.taiji.common.valid.ViolationValidator; |
@@ -1,4 +1,4 @@ | |||
package cn.com.taiji.managew.dto.ass; | |||
package cn.com.taiji.managew.dto.ass.releasePlate; | |||
import cn.com.taiji.core.dto.AbstractStaffBizRequestDTO; | |||
import io.swagger.annotations.ApiModel; |
@@ -0,0 +1,48 @@ | |||
package cn.com.taiji.managew.dto.ass.releasePlate; | |||
import cn.com.taiji.core.entity.basic.QtkBlackCard; | |||
import cn.com.taiji.core.entity.basic.QtkBlackObu; | |||
import cn.com.taiji.core.entity.basic.QtkCardInfo; | |||
import cn.com.taiji.core.entity.basic.QtkObuInfo; | |||
import cn.com.taiji.core.entity.dict.AuditStatus; | |||
import cn.com.taiji.managew.model.ass.releasePlate.*; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import java.time.LocalDateTime; | |||
import java.util.List; | |||
@Data | |||
@ApiModel(description = "售后订单-解除车牌占用审核查询") | |||
public class ReleasePlateViewResponseDTO { | |||
@ApiModelProperty(value = "下单申请时间") | |||
private LocalDateTime applyTime;//下单申请时间 | |||
@ApiModelProperty(value = "售后订单编号") | |||
private String orderNo; | |||
@ApiModelProperty(value = "订单审核状态") | |||
private AuditStatus auditStatus;// 订单审核状态 | |||
@ApiModelProperty(value = "身份证信息") | |||
private ApplyInfo applyInfo; | |||
@ApiModelProperty(value = "行驶证信息") | |||
private DrivingInfo drivingInfo; | |||
@ApiModelProperty(value = "车主信息") | |||
private OwnerInfo ownerInfo; | |||
@ApiModelProperty(value = "占用用户信息") | |||
private CustomerInfo customerInfo; | |||
@ApiModelProperty(value = "卡信息") | |||
private QtkCardInfo cardInfo; | |||
@ApiModelProperty(value = "签信息") | |||
private QtkObuInfo obuInfo; | |||
@ApiModelProperty(value = "内容提醒") | |||
private List<String> tap; | |||
@ApiModelProperty(value = "卡黑名单") | |||
private List<QtkBlackCard> cardBlackList; | |||
@ApiModelProperty(value = "签黑名单") | |||
private List<QtkBlackObu> obuBlackList; | |||
} |
@@ -35,7 +35,7 @@ public abstract class AbstractManagewManager extends AbstractCommManager { | |||
@Autowired | |||
protected IssueOrderinfoRepo issueOrderinfoRepo; | |||
@Autowired | |||
private StaffRepo staffRepo; | |||
protected StaffRepo staffRepo; | |||
protected Boolean isManager(String openId, String agencyId) throws ManagerException { | |||
Staff staff = staffRepo.findByOpenId(openId); |
@@ -1,11 +1,10 @@ | |||
package cn.com.taiji.managew.manager.ass; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.PlateOccupyQueryRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.PlateOccupyQueryResponse; | |||
import cn.com.taiji.managew.dto.ass.ReleasePlateReviewRequestDTO; | |||
import cn.com.taiji.managew.dto.ass.ReleasePlateViewRequestDTO; | |||
import cn.com.taiji.managew.dto.ass.ReleasePlateViewResponseDTO; | |||
import cn.com.taiji.managew.dto.ass.releasePlate.*; | |||
/** | |||
* @Author:ChenChao | |||
@@ -19,4 +18,6 @@ public interface ReleasePlateManager { | |||
PlateOccupyQueryResponse occupyQuery(PlateOccupyQueryRequest req) throws ManagerException; | |||
ReleasePlateViewResponseDTO view(ReleasePlateViewRequestDTO req) throws ManagerException; | |||
RealsePlateResponseDTO apply(RealsePlateRequestDTO req) throws ManagerException; | |||
} |
@@ -1,15 +1,15 @@ | |||
package cn.com.taiji.managew.manager.ass; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.ass.AssOrderinfo; | |||
import cn.com.taiji.core.entity.ass.AssVehicleRelieve; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import cn.com.taiji.core.entity.dict.log.OperateType; | |||
import cn.com.taiji.core.entity.user.Staff; | |||
import cn.com.taiji.core.manager.tools.minio.MinioUtil; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.*; | |||
import cn.com.taiji.managew.dto.ass.AssOrderInfoResponseDTO; | |||
import cn.com.taiji.managew.dto.ass.ReleasePlateReviewRequestDTO; | |||
import cn.com.taiji.managew.dto.ass.ReleasePlateViewRequestDTO; | |||
import cn.com.taiji.managew.dto.ass.ReleasePlateViewResponseDTO; | |||
import cn.com.taiji.managew.dto.ass.releasePlate.*; | |||
import cn.com.taiji.managew.manager.AbstractManagewManager; | |||
import cn.com.taiji.managew.model.ass.releasePlate.*; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
@@ -55,7 +55,7 @@ public class ReleasePlateManagerImpl extends AbstractManagewManager implements R | |||
responseDTO.setApplyTime(assOrderinfo.getApplyTime()); | |||
responseDTO.setOrderNo(assOrderinfo.getOrderNo()); | |||
responseDTO.setStep(vehicleRelieve.getStep()); | |||
responseDTO.setAuditStatus(assOrderinfo.getAuditStatus()); | |||
//申请信息 | |||
ApplyInfo applyInfo = new ApplyInfo(); | |||
applyInfo.setCustomerIdNum(vehicleRelieve.getUserIdNum()); | |||
@@ -86,17 +86,6 @@ public class ReleasePlateManagerImpl extends AbstractManagewManager implements R | |||
ownerInfo.setProxyUrl(minioUtil.getOuterUrl(vehicleRelieve.getProxyUrl())); | |||
responseDTO.setOwnerInfo(ownerInfo); | |||
} | |||
//单位信息 | |||
if (hasText(vehicleRelieve.getUnitName())) { | |||
UnitInfo unitInfo = new UnitInfo(); | |||
unitInfo.setUnitName(vehicleRelieve.getUnitName()); | |||
unitInfo.setUnitId(vehicleRelieve.getUnitId()); | |||
unitInfo.setUnitImagesUrl(minioUtil.getOuterUrl(vehicleRelieve.getUnitImagesUrl())); | |||
unitInfo.setProxyUrl(minioUtil.getOuterUrl(vehicleRelieve.getProxyUrl())); | |||
unitInfo.setUnitIdType(vehicleRelieve.getUnitIdType()); | |||
responseDTO.setUnitInfo(unitInfo); | |||
} | |||
//占用用户信息 | |||
CustomerInfo customerInfo = new CustomerInfo(); | |||
customerInfo.setCustomerName(assOrderinfo.getCustomerName()); | |||
@@ -107,4 +96,28 @@ public class ReleasePlateManagerImpl extends AbstractManagewManager implements R | |||
return responseDTO; | |||
} | |||
@Override | |||
public RealsePlateResponseDTO apply(RealsePlateRequestDTO req) throws ManagerException { | |||
req.validate(); | |||
RealsePlateResponseDTO responseDTO = new RealsePlateResponseDTO(); | |||
if (!req.getOwnerName().equals(req.getName()) && req.getOwnerIdType() == null){ | |||
responseDTO.setFlag(1); | |||
return responseDTO; | |||
} | |||
ReleasePlateApplyRequest request = copyProperties(req, new ReleasePlateApplyRequest()); | |||
request.setSourceType(req.getOrderSource()); | |||
String openId = findOpenIdByToken(req.getAccessToken()); | |||
request.setOpenId(openId); | |||
Staff staff = staffRepo.findByOpenId(openId); | |||
request.setAgencyId(staff.getAgencyId()); | |||
request.setChannelId(staff.getServiceHallId()); | |||
ReleasePlateApplyResponse response = jsonPostRepeat(request); | |||
sysPersistOperateLog(OperateType.RELEASE_PLATE_APPLY, response.getId(), req.getOrderSource(), openId,"解除车牌占用申请"); | |||
responseDTO.setFlag(2); | |||
return responseDTO; | |||
} | |||
} |
@@ -1,27 +0,0 @@ | |||
package cn.com.taiji.managew.model.ass.releasePlate; | |||
import cn.com.taiji.core.entity.dict.basic.IdType; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/8/27 17:04 | |||
* @Filename:UnitInfo | |||
* @description: | |||
*/ | |||
@Data | |||
@ApiModel(description = "单位资料信息") | |||
public class UnitInfo { | |||
private String unitImagesUrl;//营业执照图片地址 | |||
@ApiModelProperty(value = "授权书图片地址") | |||
private String proxyUrl;//授权书图片地址 | |||
@ApiModelProperty(value = "单位证件类型") | |||
private IdType unitIdType;//单位证件类型 | |||
@ApiModelProperty(value = "单位名称车辆所有人") | |||
private String unitName;//单位名称车辆所有人 | |||
@ApiModelProperty(value = "单位证件编号") | |||
private String unitId;//单位证件编号 | |||
} |