Ver código fonte

managew 解除车牌占用调整

master
chenchaod 6 dias atrás
pai
commit
35ab7118b3

+ 8
- 9
zhywpt-app-managew/src/main/java/cn/com/taiji/managew/api/ass/ReleasePlateController.java Ver arquivo

@@ -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 {

+ 0
- 98
zhywpt-app-managew/src/main/java/cn/com/taiji/managew/dto/ass/ReleasePlateViewResponseDTO.java Ver arquivo

@@ -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;
}

+ 100
- 0
zhywpt-app-managew/src/main/java/cn/com/taiji/managew/dto/ass/releasePlate/RealsePlateRequestDTO.java Ver arquivo

@@ -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);
}
}
}

}

+ 19
- 0
zhywpt-app-managew/src/main/java/cn/com/taiji/managew/dto/ass/releasePlate/RealsePlateResponseDTO.java Ver arquivo

@@ -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;
}

zhywpt-app-managew/src/main/java/cn/com/taiji/managew/dto/ass/ReleasePlateReviewRequestDTO.java → zhywpt-app-managew/src/main/java/cn/com/taiji/managew/dto/ass/releasePlate/ReleasePlateReviewRequestDTO.java Ver arquivo

@@ -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;

zhywpt-app-managew/src/main/java/cn/com/taiji/managew/dto/ass/ReleasePlateViewRequestDTO.java → zhywpt-app-managew/src/main/java/cn/com/taiji/managew/dto/ass/releasePlate/ReleasePlateViewRequestDTO.java Ver arquivo

@@ -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;

+ 48
- 0
zhywpt-app-managew/src/main/java/cn/com/taiji/managew/dto/ass/releasePlate/ReleasePlateViewResponseDTO.java Ver arquivo

@@ -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;
}

+ 1
- 1
zhywpt-app-managew/src/main/java/cn/com/taiji/managew/manager/AbstractManagewManager.java Ver arquivo

@@ -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);

+ 4
- 3
zhywpt-app-managew/src/main/java/cn/com/taiji/managew/manager/ass/ReleasePlateManager.java Ver arquivo

@@ -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;
}

+ 29
- 16
zhywpt-app-managew/src/main/java/cn/com/taiji/managew/manager/ass/ReleasePlateManagerImpl.java Ver arquivo

@@ -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;
}
}

+ 0
- 27
zhywpt-app-managew/src/main/java/cn/com/taiji/managew/model/ass/releasePlate/UnitInfo.java Ver arquivo

@@ -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;//单位证件编号
}

Carregando…
Cancelar
Salvar