@@ -1,6 +1,7 @@ | |||
package cn.com.taiji.core.entity.ass; | |||
import cn.com.taiji.core.entity.AbstractStringPropertyUUIDEntity; | |||
import cn.com.taiji.core.entity.dict.ass.AssVehicleRealseStep; | |||
import cn.com.taiji.core.entity.dict.ass.RelieveStatus; | |||
import cn.com.taiji.core.entity.dict.basic.IdType; | |||
import lombok.Getter; | |||
@@ -83,6 +84,8 @@ public class AssVehicleRelieve extends AbstractStringPropertyUUIDEntity { | |||
private String ownerName;//车主身份证上名 | |||
@Column(name = "OWNER_ID_NUM") | |||
private String ownerIdNum;//车主身份证证件号 | |||
@Column(name = "STEP") | |||
private AssVehicleRealseStep step; | |||
@@ -6,6 +6,7 @@ import javax.persistence.Column; | |||
import javax.persistence.Entity; | |||
import javax.persistence.Table; | |||
import cn.com.taiji.common.entity.StringPropertyUUIDEntity; | |||
import cn.com.taiji.common.entity.StringUUIDEntity; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import lombok.Getter; | |||
@@ -20,7 +21,7 @@ import lombok.Setter; | |||
@Getter | |||
@Setter | |||
@Table(name ="ASS_SELF_SERVICE_ORDER") | |||
public class SelfServiceOrder extends StringUUIDEntity{ | |||
public class SelfServiceOrder extends StringPropertyUUIDEntity { | |||
/** 问题类型 */ | |||
@Column(name ="QUESTION_TYPE") |
@@ -6,6 +6,7 @@ import javax.persistence.Column; | |||
import javax.persistence.Entity; | |||
import javax.persistence.Table; | |||
import cn.com.taiji.common.entity.StringPropertyUUIDEntity; | |||
import cn.com.taiji.common.entity.StringUUIDEntity; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
@@ -19,7 +20,7 @@ import lombok.Setter; | |||
@Getter | |||
@Setter | |||
@Table(name ="ASS_SELF_SERVICE_STAFF_RECORD") | |||
public class SelfServiceStaffRecord extends StringUUIDEntity{ | |||
public class SelfServiceStaffRecord extends StringPropertyUUIDEntity { | |||
/** 自助工单id */ | |||
@Column(name ="SERVICE_ORDER_ID") |
@@ -6,6 +6,7 @@ import javax.persistence.Column; | |||
import javax.persistence.Entity; | |||
import javax.persistence.Table; | |||
import cn.com.taiji.common.entity.StringPropertyUUIDEntity; | |||
import cn.com.taiji.common.entity.StringUUIDEntity; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
@@ -19,7 +20,7 @@ import lombok.Setter; | |||
@Getter | |||
@Setter | |||
@Table(name ="ASS_SELF_SERVICE_USER_RECORD") | |||
public class SelfServiceUserRecord extends StringUUIDEntity{ | |||
public class SelfServiceUserRecord extends StringPropertyUUIDEntity { | |||
/** 自助工单id */ | |||
@Column(name ="SERVICE_ORDER_ID") |
@@ -1,9 +1,11 @@ | |||
package cn.com.taiji.core.entity.managew; | |||
import java.time.LocalDate; | |||
import java.time.LocalDateTime; | |||
import javax.persistence.*; | |||
import cn.com.taiji.common.entity.StringPropertyUUIDEntity; | |||
import cn.com.taiji.common.entity.StringUUIDEntity; | |||
import cn.com.taiji.core.entity.dict.EnableStatus; | |||
import lombok.Getter; | |||
@@ -18,15 +20,15 @@ import lombok.Setter; | |||
@Table(name ="KNOWLEDGE_AFTER_SALE_AUDIT") | |||
@Getter | |||
@Setter | |||
public class KnowledgeAfterSaleAudit extends StringUUIDEntity{ | |||
public class KnowledgeAfterSaleAudit extends StringPropertyUUIDEntity { | |||
/** 更新时间 */ | |||
@Column(name ="UPDATE_TIME") | |||
private LocalDate updateTime = LocalDate.now(); | |||
private LocalDateTime updateTime; | |||
/** 创建时间 */ | |||
@Column(name ="INSERT_TIME") | |||
private LocalDate insertTime = LocalDate.now(); | |||
private LocalDateTime insertTime; | |||
/** 涉及人员 */ | |||
@Column(name ="STAFF") |
@@ -1,9 +1,11 @@ | |||
package cn.com.taiji.core.entity.managew; | |||
import java.time.LocalDate; | |||
import java.time.LocalDateTime; | |||
import javax.persistence.*; | |||
import cn.com.taiji.common.entity.StringPropertyUUIDEntity; | |||
import cn.com.taiji.common.entity.StringUUIDEntity; | |||
import cn.com.taiji.core.entity.dict.EnableStatus; | |||
import lombok.Getter; | |||
@@ -18,16 +20,15 @@ import lombok.Setter; | |||
@Table(name ="KNOWLEDGE_BUSINESS_INFO") | |||
@Getter | |||
@Setter | |||
public class KnowledgeBusinessInfo extends StringUUIDEntity{ | |||
public class KnowledgeBusinessInfo extends StringPropertyUUIDEntity { | |||
/** 更新时间 */ | |||
@Column(name ="UPDATE_TIME") | |||
private LocalDate updateTime = LocalDate.now(); | |||
private LocalDateTime updateTime; | |||
/** 创建时间 */ | |||
@Column(name ="INSERT_TIME") | |||
private LocalDate insertTime = LocalDate.now(); | |||
private LocalDateTime insertTime; | |||
/** 业务类型 */ | |||
@Column(name ="BUSINESS_TYPE") | |||
@@ -80,7 +81,6 @@ public class KnowledgeBusinessInfo extends StringUUIDEntity{ | |||
/** 不适用原因 */ | |||
@Column(name ="APPLICABLE_REASON") | |||
private String applicableReason; | |||
/** 反馈人 */ |
@@ -4,6 +4,7 @@ import java.time.LocalDate; | |||
import javax.persistence.*; | |||
import cn.com.taiji.common.entity.StringPropertyUUIDEntity; | |||
import cn.com.taiji.common.entity.StringUUIDEntity; | |||
import cn.com.taiji.core.entity.dict.KnowlegdeType; | |||
import lombok.Getter; | |||
@@ -18,7 +19,7 @@ import lombok.Setter; | |||
@Table(name = "KNOWLEDGE_FILE_INFO") | |||
@Getter | |||
@Setter | |||
public class KnowledgeFileInfo extends StringUUIDEntity { | |||
public class KnowledgeFileInfo extends StringPropertyUUIDEntity { | |||
/** 创建时间 */ | |||
@Column(name = "INSERT_TIME") |
@@ -1,9 +1,11 @@ | |||
package cn.com.taiji.core.entity.managew; | |||
import java.time.LocalDate; | |||
import java.time.LocalDateTime; | |||
import javax.persistence.*; | |||
import cn.com.taiji.common.entity.StringPropertyUUIDEntity; | |||
import cn.com.taiji.common.entity.StringUUIDEntity; | |||
import cn.com.taiji.core.entity.dict.EnableStatus; | |||
import lombok.Getter; | |||
@@ -18,15 +20,15 @@ import lombok.Setter; | |||
@Table(name ="KNOWLEDGE_WORK_ORDER_PROCESS") | |||
@Getter | |||
@Setter | |||
public class KnowledgeWorkOrderProcess extends StringUUIDEntity{ | |||
public class KnowledgeWorkOrderProcess extends StringPropertyUUIDEntity { | |||
/** 更新时间 */ | |||
@Column(name ="UPDATE_TIME") | |||
private LocalDate updateTime = LocalDate.now(); | |||
private LocalDateTime updateTime; | |||
/** 创建时间 */ | |||
@Column(name ="INSERT_TIME") | |||
private LocalDate insertTime = LocalDate.now(); | |||
private LocalDateTime insertTime; | |||
/** 一级工单类型 */ | |||
@Column(name ="LEVEL1") |
@@ -3,6 +3,7 @@ package cn.com.taiji.core.model.comm.protocol.ias.ass; | |||
import cn.com.taiji.common.pub.validation.PatternFactory; | |||
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.model.comm.protocol.AbstractSignTypeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.constraint.EnumInteger; | |||
import cn.com.taiji.core.model.comm.protocol.constraint.IntegerConstant; | |||
@@ -71,7 +72,17 @@ public class ReleasePlateApplyRequest extends AbstractSignTypeRequest<ReleasePla | |||
private String orgImagesUrl1;//营业执照图片地址 | |||
private String authorizeImagesUrl1;//授权书图片地址 | |||
@NotBlank | |||
private SourceType sourceType;//来源 | |||
@NotBlank | |||
private String agencyId;//渠道 | |||
@NotBlank | |||
private String channelId;//网点 | |||
@NotBlank | |||
private String OpenId; | |||
public void relatedValid(ErrorMsgBuilder builder) { | |||
builder.validFieldTrue("sourceType", sourceType == SourceType.ALI || sourceType == SourceType.WECHAT || sourceType == SourceType.WEB || sourceType == SourceType.SERVICE_HALL, "申请来源不正确"); | |||
if (applyType == 2){ | |||
builder.validFieldNotBlank("orgName",orgName); | |||
builder.validFieldNotNull("orgIdClass",orgIdClass); |
@@ -0,0 +1,13 @@ | |||
package cn.com.taiji.core.repo.jpa.ass; | |||
import cn.com.taiji.common.repo.jpa.AbstractJpaRepo; | |||
import cn.com.taiji.core.entity.ass.AssVehicleRelieve; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/8/8 20:47 | |||
* @Filename:AssVehicleRelieveRepo | |||
* @description: | |||
*/ | |||
public interface AssVehicleRelieveRepo extends AbstractJpaRepo<AssVehicleRelieve, String> { | |||
} |
@@ -57,12 +57,6 @@ public class DeviceQueryRequestDTO extends AbstractBizRequestDTO { | |||
@NotBlank | |||
@ApiModelProperty(value = "卡签绑定完成状态") | |||
private String bindingFinishStatus;//卡签绑定完成状态; | |||
@NotNull | |||
@ApiModelProperty(value = "卡状态") | |||
private CardStatus cardStatus; | |||
@NotNull | |||
@ApiModelProperty(value = "卡类型") | |||
private CardType cardType; | |||
@ApiModelProperty(value = "卡余额") | |||
private Long cardBalance; | |||
// 签信息 | |||
@@ -118,7 +112,4 @@ public class DeviceQueryRequestDTO extends AbstractBizRequestDTO { | |||
@NotBlank | |||
@ApiModelProperty(value = "obu版本号") | |||
private String obuVersion;// obu版本号; | |||
@NotNull | |||
@ApiModelProperty(value = "OBU状态") | |||
private ObuStatus obuStatus; | |||
} |
@@ -43,6 +43,15 @@ public class DeviceQueryRecordManagerImpl extends AbstractCommManager implements | |||
record.setOpenId(findOpenIdByToken(requestDTO.getAccessToken())); | |||
record.setSourceType(requestDTO.getOrderSource()); | |||
record.setQueryTime(LocalDateTime.now()); | |||
QtkCardInfo cardInfo = cardInfoRepo.findByCardId(requestDTO.getCardId()); | |||
if (cardInfo != null) { | |||
record.setCardType(cardInfo.getCardTypeNew()); | |||
record.setCardStatus(cardInfo.getCardStatus()); | |||
} | |||
QtkObuInfo obuInfo = obuInfoRepo.findByObuId(requestDTO.getObuId()); | |||
if (obuInfo != null) { | |||
record.setObuStatus(obuInfo.getObuStatus()); | |||
} | |||
recordRepo.save(record); | |||
DeviceQueryResponseDTO resDTO = new DeviceQueryResponseDTO(); | |||
resDTO.setId(record.getId()); |
@@ -1,6 +1,7 @@ | |||
package cn.com.taiji.iaw.manager.ass; | |||
import java.time.LocalDate; | |||
import java.time.LocalDateTime; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
@@ -67,7 +68,7 @@ public class KnowledgeBaseManagerImpl extends AbstractCommManager implements Kno | |||
orderProcess.setStatus(reqDto.getStatus()); | |||
orderProcess.setApplicableReason(reqDto.getApplicableReason()); | |||
orderProcess.setApplicablePerson(openId); | |||
orderProcess.setUpdateTime(LocalDate.now()); | |||
orderProcess.setUpdateTime(LocalDateTime.now()); | |||
workOrderProcessRepo.merge(orderProcess); | |||
responseDTO.setMsg("反馈成功!"); | |||
return responseDTO; | |||
@@ -105,7 +106,7 @@ public class KnowledgeBaseManagerImpl extends AbstractCommManager implements Kno | |||
businessInfo.setStatus(reqDto.getStatus()); | |||
businessInfo.setApplicableReason(reqDto.getApplicableReason()); | |||
businessInfo.setApplicablePerson(openId); | |||
businessInfo.setUpdateTime(LocalDate.now()); | |||
businessInfo.setUpdateTime(LocalDateTime.now()); | |||
businessInfoRepo.merge(businessInfo); | |||
responseDTO.setMsg("反馈成功!"); | |||
return responseDTO; | |||
@@ -143,7 +144,7 @@ public class KnowledgeBaseManagerImpl extends AbstractCommManager implements Kno | |||
afterSaleAudit.setStatus(reqDto.getStatus()); | |||
afterSaleAudit.setApplicableReason(reqDto.getApplicableReason()); | |||
afterSaleAudit.setApplicablePerson(openId); | |||
afterSaleAudit.setUpdateTime(LocalDate.now()); | |||
afterSaleAudit.setUpdateTime(LocalDateTime.now()); | |||
afterSaleAuditRepo.merge(afterSaleAudit); | |||
responseDTO.setMsg("反馈成功!"); | |||
return responseDTO; |
@@ -547,7 +547,7 @@ public class IssueOrderManageImpl extends AbstractIawManager implements IssueOrd | |||
@Override | |||
public ListQrCodeResDTO listQRcode(ListQrCodeReqDTO reqDto) throws ManagerException { | |||
IssueOrderinfo order = checkOrder(reqDto.getOrderNo()); | |||
String context = "https://qtzl.etcjz.cn/default-bucket/order.html"; | |||
String context = "https://qtzl.etcjz.cn/zhywpt-issuer/order.html"; | |||
int qrSize = 300; | |||
int qrMargin = 3; | |||
// 创建二维码配置 |
@@ -103,7 +103,7 @@ public class ProductDetailResponseDTO { | |||
private Long amount;//办理费总金额 | |||
@ApiModelProperty(value = "欠费月收比例") | |||
private Integer monthlyRate; | |||
private Double monthlyRate; | |||
@ApiModelProperty(value = "是否支付true是false否") | |||
private Boolean needPay; |
@@ -7,6 +7,7 @@ import java.net.MalformedURLException; | |||
import java.net.URL; | |||
import java.net.URLEncoder; | |||
import java.time.LocalDate; | |||
import java.time.LocalDateTime; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
@@ -91,7 +92,7 @@ public class KnowledgeBaseManagerImpl extends AbstractCommManager implements Kno | |||
orderProcess.setStatus(reqDto.getStatus()); | |||
orderProcess.setApplicableReason(reqDto.getApplicableReason()); | |||
orderProcess.setApplicablePerson(openId); | |||
orderProcess.setUpdateTime(LocalDate.now()); | |||
orderProcess.setUpdateTime(LocalDateTime.now()); | |||
workOrderProcessRepo.merge(orderProcess); | |||
responseDTO.setMsg("反馈成功!"); | |||
return responseDTO; | |||
@@ -107,7 +108,7 @@ public class KnowledgeBaseManagerImpl extends AbstractCommManager implements Kno | |||
throw new ManagerException("没找到该条知识库信息"); | |||
} | |||
BeanTools.copyProperties(reqDto, orderProcess); | |||
orderProcess.setUpdateTime(LocalDate.now()); | |||
orderProcess.setUpdateTime(LocalDateTime.now()); | |||
orderProcess.setStatus(EnableStatus.ENABLE); | |||
orderProcess.setApplicableReason(null); | |||
orderProcess.setApplicablePerson(null); | |||
@@ -213,7 +214,7 @@ public class KnowledgeBaseManagerImpl extends AbstractCommManager implements Kno | |||
businessInfo.setStatus(reqDto.getStatus()); | |||
businessInfo.setApplicableReason(reqDto.getApplicableReason()); | |||
businessInfo.setApplicablePerson(openId); | |||
businessInfo.setUpdateTime(LocalDate.now()); | |||
businessInfo.setUpdateTime(LocalDateTime.now()); | |||
businessInfoRepo.merge(businessInfo); | |||
responseDTO.setMsg("反馈成功!"); | |||
return responseDTO; | |||
@@ -229,7 +230,7 @@ public class KnowledgeBaseManagerImpl extends AbstractCommManager implements Kno | |||
throw new ManagerException("没找到该条知识库信息"); | |||
} | |||
BeanTools.copyProperties(reqDto, businessInfo); | |||
businessInfo.setUpdateTime(LocalDate.now()); | |||
businessInfo.setUpdateTime(LocalDateTime.now()); | |||
businessInfo.setStatus(EnableStatus.ENABLE); | |||
businessInfo.setApplicableReason(null); | |||
businessInfo.setApplicablePerson(null); | |||
@@ -335,7 +336,7 @@ public class KnowledgeBaseManagerImpl extends AbstractCommManager implements Kno | |||
afterSaleAudit.setStatus(reqDto.getStatus()); | |||
afterSaleAudit.setApplicableReason(reqDto.getApplicableReason()); | |||
afterSaleAudit.setApplicablePerson(openId); | |||
afterSaleAudit.setUpdateTime(LocalDate.now()); | |||
afterSaleAudit.setUpdateTime(LocalDateTime.now()); | |||
afterSaleAuditRepo.merge(afterSaleAudit); | |||
responseDTO.setMsg("反馈成功!"); | |||
return responseDTO; | |||
@@ -352,7 +353,7 @@ public class KnowledgeBaseManagerImpl extends AbstractCommManager implements Kno | |||
} | |||
BeanTools.copyProperties(reqDto, afterSaleAudit); | |||
afterSaleAudit.setOrderSource(reqDto.getOrderSource1()); | |||
afterSaleAudit.setUpdateTime(LocalDate.now()); | |||
afterSaleAudit.setUpdateTime(LocalDateTime.now()); | |||
afterSaleAudit.setStatus(EnableStatus.ENABLE); | |||
afterSaleAudit.setApplicableReason(null); | |||
afterSaleAudit.setApplicablePerson(null); |
@@ -3,6 +3,7 @@ package cn.com.taiji.ias.dict; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceCommand; | |||
import cn.com.taiji.core.model.comm.protocol.SignServiceType; | |||
import cn.com.taiji.core.model.comm.protocol.ias.IasServiceType; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.AssServiceCmd; | |||
import cn.com.taiji.core.model.comm.protocol.ias.issue.IssueServiceCmd; | |||
import cn.com.taiji.core.model.comm.protocol.ias.order.OrderServiceCmd; | |||
@@ -30,6 +31,8 @@ public enum DataType { | |||
GET_H5_URL("getH5Url", IasServiceType.ISSUE, IssueServiceCmd.GETH5URL), | |||
RELEASE_PLATE_APPLY("releasePlateApply", IasServiceType.ISSUE, AssServiceCmd.RELEASEPLATEAPPLY), | |||
; | |||
private final String value; |
@@ -0,0 +1,69 @@ | |||
package cn.com.taiji.ias.manager.ass; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.basic.*; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ods.oqs.issue.*; | |||
import cn.com.taiji.core.repo.jpa.ass.AssOrderinfoRepo; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.ias.manager.AbstractHandleManager; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import java.util.List; | |||
public abstract class AbstractAssManager<T extends AbstractSignTypeRequest<?>> extends AbstractHandleManager<T> { | |||
public AbstractAssManager(DataType dataType) { | |||
super(dataType); | |||
} | |||
@Autowired | |||
protected AssOrderinfoRepo assOrderinfoRepo; | |||
// 双系统通过车牌id查询在用卡 | |||
protected List<QtkCardInfo> queryCardInUse(String vehicleId) throws ServiceHandleException { | |||
OqsCardQueryRequest req = new OqsCardQueryRequest(); | |||
req.setVehicleId(vehicleId); | |||
OqsCardQueryResponse res = jsonPostRepeat(req); | |||
return res.getQtkCardInfos(); | |||
} | |||
// 双系统通过车牌id查询在用签 | |||
protected List<QtkObuInfo> queryObuInUse(String vehicleId) throws ServiceHandleException { | |||
OqsObuQueryRequest oqsObuQueryRequest = new OqsObuQueryRequest(); | |||
oqsObuQueryRequest.setVehicleId(vehicleId); | |||
OqsObuQueryResponse res = jsonPostRepeat(oqsObuQueryRequest); | |||
return res.getQtkObuInfos(); | |||
} | |||
//双系统通过车牌id查询车辆信息 | |||
protected QtkVehicleInfo queryVehicleInfo(String vehicleId) throws ServiceHandleException { | |||
OqsVehicleQueryRequest oqsVehicleQueryRequest = new OqsVehicleQueryRequest(); | |||
oqsVehicleQueryRequest.setVehicleId(vehicleId); | |||
OqsVehicleQueryResponse res = jsonPostRepeat(oqsVehicleQueryRequest); | |||
return res.getQtkVehicleInfo(); | |||
} | |||
//双系统通过customerId查ETC用户 | |||
protected QtkCustomerInfo queryCustomerInfo(String customerId) throws ServiceHandleException { | |||
OqsUserQueryRequest request = new OqsUserQueryRequest(); | |||
request.setCustomerId(customerId); | |||
OqsUserQueryResponse response = jsonPostRepeat(request); | |||
return response.getQtkCustomerInfo(); | |||
} | |||
// 双系统查询卡黑名单 | |||
protected List<QtkBlackCard> queryBlackCard(String cardId) throws ServiceHandleException { | |||
OqsCardBlackRequest oqsCardBlackRequest = new OqsCardBlackRequest(); | |||
oqsCardBlackRequest.setCardId(cardId); | |||
OqsCardBlackResponse oqsCardBlackResponse = jsonPostRepeat(oqsCardBlackRequest); | |||
return oqsCardBlackResponse.getQtkBlackCards(); | |||
} | |||
//双系统查询签黑名单 | |||
protected List<QtkBlackObu> queryBlackObu(String obuId) throws ServiceHandleException { | |||
OqsObuBlackRequest oqsObuBlackRequest = new OqsObuBlackRequest(); | |||
oqsObuBlackRequest.setObuId(obuId); | |||
OqsObuBlackResponse oqsObuBlackResponse = jsonPostRepeat(oqsObuBlackRequest); | |||
return oqsObuBlackResponse.getQtkBlackObus(); | |||
} | |||
} |
@@ -0,0 +1,253 @@ | |||
package cn.com.taiji.ias.manager.ass.releasePlate; | |||
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.basic.*; | |||
import cn.com.taiji.core.entity.dict.AuditStatus; | |||
import cn.com.taiji.core.entity.dict.ass.AssOrderStatus; | |||
import cn.com.taiji.core.entity.dict.ass.AssOrderType; | |||
import cn.com.taiji.core.entity.dict.ass.AssVehicleRealseStep; | |||
import cn.com.taiji.core.entity.dict.ass.RelieveStatus; | |||
import cn.com.taiji.core.entity.dict.basic.*; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.ReleasePlateApplyRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.ReleasePlateApplyResponse; | |||
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.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.core.repo.jpa.ass.AssVehicleRelieveRepo; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.ias.manager.ass.AbstractAssManager; | |||
import cn.com.taiji.ias.manager.valid.VehiclePlateCheckManager; | |||
import cn.com.taiji.ias.model.ServiceLogEvent; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.io.IOException; | |||
import java.time.LocalDateTime; | |||
import java.util.List; | |||
import java.util.Map; | |||
import java.util.stream.Collectors; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/8/6 22:02 | |||
* @Filename:ReleasePlateApplyManager | |||
* @description: | |||
*/ | |||
@Service | |||
public class ReleasePlateApplyManager extends AbstractAssManager<ReleasePlateApplyRequest> { | |||
public ReleasePlateApplyManager() { | |||
super(DataType.RELEASE_PLATE_APPLY); | |||
} | |||
public static final String CARD_INFO = "cardInfo"; | |||
public static final String OBU_INFO = "obuInfo"; | |||
@Autowired | |||
private VehiclePlateCheckManager vehiclePlateCheckManager; | |||
@Autowired | |||
private AssVehicleRelieveRepo assVehicleRelieveRepo; | |||
@Override | |||
protected String getDataId(ReleasePlateApplyRequest req) { | |||
return ""; | |||
} | |||
@Override | |||
protected void formatValidateInternal(ErrorMsgBuilder builder, ReleasePlateApplyRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
req.relatedValid(builder); | |||
} | |||
@Override | |||
protected void businessValidateInternal(ErrorMsgBuilder builder, ReleasePlateApplyRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
if (req.getApplyType() == 1) { | |||
//个人申请 | |||
if (!req.getName().equals(req.getVehicleOwnerName()) && req.getIsSelf() == 1) { | |||
throw newBusinessException("车主不符,请重新申请"); | |||
}else if (!req.getPersonName().equals(req.getVehicleOwnerName()) && req.getIsSelf() == 2){ | |||
throw newBusinessException("车主不符,请重新申请"); | |||
} | |||
} else if (!req.getOrgName().equals(req.getVehicleOwnerName())){ | |||
//单位申请 | |||
throw newBusinessException("行驶证和营业执照车主不符,请重新申请"); | |||
} | |||
String vehicleId = req.getVehiclePlate() + "_" + req.getVehiclePlateColor(); | |||
// 双系统查询在用卡 | |||
QtkCardInfo qtkCardInfo = null; | |||
List<QtkCardInfo> qtkCardInfos = queryCardInUse(vehicleId); | |||
if (!isEmpty(qtkCardInfos)){ | |||
qtkCardInfo = qtkCardInfos.get(0); | |||
if (CardType.PRE_CHARGE_CARD == qtkCardInfo.getCardTypeNew()) throw newBusinessException("预存卡不可解除车牌占用"); | |||
} | |||
// 双系统查询在用签 | |||
QtkObuInfo qtkObuInfo = null; | |||
List<QtkObuInfo> qtkObuInfos = queryObuInUse(vehicleId); | |||
if (!isEmpty(qtkObuInfos)){ | |||
qtkObuInfo = qtkObuInfos.get(0); | |||
} | |||
//当前车辆牌照是否被占用(1-发行方已办理 2-统一平台办理 3-未关联 4-未办理 5办理中) | |||
VehiclePlateCheckResponse res = checkVehiclePlate(req.getVehiclePlate(), req.getVehiclePlateColor()); | |||
//部中心校验本地系统也校验 | |||
if (res.getResult() == 4 && qtkCardInfo == null && qtkObuInfo == null) { | |||
throw newBusinessException("该车牌号未被占用,无需申请"); | |||
} | |||
//外省发行方占用 | |||
if (!res.getInfo().contains("贵州")) { | |||
throw newBusinessException(res.getInfo()); | |||
} | |||
dataStream.put(CARD_INFO, qtkCardInfo); | |||
dataStream.put(OBU_INFO, qtkObuInfo); | |||
//申请人和车主是同一人引导走其他流程 | |||
applyCheckApplyAndOwner(req,dataStream); | |||
//申请人和车主不是同一人,直接进入处理业务,创建售后订单,人工处理 | |||
} | |||
private VehiclePlateCheckResponse checkVehiclePlate(String vehiclePlate, Integer vehiclePlateColor) throws ServiceHandleException { | |||
VehiclePlateCheckRequest req = new VehiclePlateCheckRequest(); | |||
req.setVehiclePlate(vehiclePlate); | |||
req.setVehiclePlateColor(vehiclePlateColor); | |||
// 1-发行方已办理 2-统一平台办理 3-未关联 4-未办理 5办理中 | |||
VehiclePlateCheckResponse res = vehiclePlateCheckManager.serviceHandle(req); | |||
return res; | |||
} | |||
private void applyCheckApplyAndOwner(ReleasePlateApplyRequest req,Map<String, Object> dataStream) throws ServiceHandleException { | |||
//双系统查找占用的车辆 | |||
QtkVehicleInfo qtkVehicleInfo = queryVehicleInfo(req.getVehiclePlate() + "_" + req.getVehiclePlateColor()); | |||
//双系统查询ETC用户信息 | |||
QtkCustomerInfo customerInfo = queryCustomerInfo(qtkVehicleInfo.getCustomerId()); | |||
//占用用户和申请用户一致 | |||
if(req.getCustomerIdNum().equals(customerInfo.getCustomerIdNum())){ | |||
//校验卡 | |||
validCard(dataStream); | |||
//校验签 | |||
validObu(dataStream); | |||
} | |||
} | |||
private void validCard(Map<String, Object> dataStream) throws ServiceHandleException { | |||
QtkCardInfo qtkCardInfo = (QtkCardInfo) dataStream.get(CARD_INFO); | |||
if (qtkCardInfo == null){ | |||
//没有在用卡签,可以申请解除车牌占用 | |||
return; | |||
} | |||
//双系统查卡黑名单 | |||
List<QtkBlackCard> qtkBlackCards = queryBlackCard(qtkCardInfo.getCardId()); | |||
//卡状态正常和挂失状态引导走正常注销流程 | |||
//2、没有数据即卡状态正常 | |||
//3、有数据看是否是挂失 | |||
if (qtkBlackCards == null || qtkBlackCards.isEmpty()){ | |||
throw newBusinessException("请先注销"); | |||
} else { | |||
//下黑的所有类型 | |||
List<CardBlackType> types = qtkBlackCards.stream().map(QtkBlackCard::getType).collect(Collectors.toList()); | |||
if (types.contains(CardBlackType.LOSS)){ | |||
//包含有挂失类型 | |||
throw newBusinessException("请先注销"); | |||
}else { | |||
//黑名单状态检测黑名单表有除了挂失黑名单以外的黑名单,进入黑名单流程 | |||
throw newBusinessException("进入黑名单操作流程"); | |||
} | |||
} | |||
} | |||
private void validObu(Map<String, Object> dataStream) throws ServiceHandleException { | |||
QtkObuInfo qtkObuInfo = (QtkObuInfo) dataStream.get(OBU_INFO); | |||
if (qtkObuInfo == null){ | |||
//没有在用卡签,可以申请解除车牌占用 | |||
return; | |||
} | |||
// 双系统查签黑名单 | |||
List<QtkBlackObu> qtkBlackObus = queryBlackObu(qtkObuInfo.getObuId()); | |||
//签状态正常和挂失状态引导走正常注销流程 | |||
//2、没有数据即卡状态正常 | |||
//3、有数据看是否是挂失 | |||
if (qtkBlackObus == null || qtkBlackObus.isEmpty()){ | |||
throw newBusinessException("请先注销"); | |||
} else { | |||
//下黑的所有类型 | |||
List<ObuBlackType> types = qtkBlackObus.stream().map(QtkBlackObu::getType).collect(Collectors.toList()); | |||
if (types.contains(ObuBlackType.LOSS)){ | |||
//包含有挂失类型 | |||
throw newBusinessException("请先注销"); | |||
}else { | |||
//黑名单状态检测黑名单表有除了挂失黑名单以外的黑名单,进入黑名单流程 | |||
throw newBusinessException("进入黑名单操作流程"); | |||
} | |||
} | |||
} | |||
@Override | |||
protected void persistInternal(ReleasePlateApplyRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
LocalDateTime now = LocalDateTime.now(); | |||
//保存售后表 | |||
AssOrderinfo assOrderinfo = new AssOrderinfo(); | |||
assOrderinfo.setOrderType(AssOrderType.RELEASE_VEHICLE); | |||
assOrderinfo.setOrderNo(createOrderNo(req.getAgencyId())); | |||
assOrderinfo.setOrderSource(req.getSourceType()); | |||
assOrderinfo.setOrderStatus(AssOrderStatus.NORMAL); | |||
assOrderinfo.setApplyTime(now); | |||
assOrderinfo.setAgencyId(req.getAgencyId()); | |||
assOrderinfo.setChannelId(req.getChannelId()); | |||
// FIXME: 业务员申请的单子,用户怎么查看 | |||
if (SourceType.SERVICE_HALL == req.getSourceType() || SourceType.WEB == req.getSourceType()){ | |||
assOrderinfo.setStaffOpenId(req.getOpenId()); | |||
} | |||
if (SourceType.ALI == req.getSourceType() || SourceType.WECHAT == req.getSourceType()){ | |||
assOrderinfo.setOpenId(req.getOpenId()); | |||
// // 自营工具 和 管理端 | |||
// assOrderinfo.setAgencyId("52001106004");// 黔通智联(自营) | |||
// assOrderinfo.setChannelId("5201010600401150002"); // 黔通智联售后服务 | |||
} | |||
assOrderinfo.setCustomerTel(req.getMobile()); | |||
assOrderinfo.setCustomerName(req.getName()); | |||
assOrderinfo.setCustomerIdType(IdType.SFZ); | |||
assOrderinfo.setCustomerIdNum(req.getCustomerIdNum()); | |||
assOrderinfo.setAuditStatus(AuditStatus.AUDIT); | |||
//保存解除车牌占用明细表 | |||
AssVehicleRelieve assVehicleRelieve = new AssVehicleRelieve(); | |||
assVehicleRelieve.setStep(AssVehicleRealseStep.SUBMIT_AUDIT); | |||
assVehicleRelieve.setOrderNo(assOrderinfo.getOrderNo()); | |||
assVehicleRelieve.setUserPosImagesUrl(req.getUserImagesUrl1());//身份证人像图片地址 | |||
assVehicleRelieve.setUserNegImagesUrl(req.getUserImagesUrl2()); | |||
assVehicleRelieve.setUserType(IdType.SFZ); | |||
assVehicleRelieve.setVehPosImgUrl(req.getVehicleImagesUrl1());////行驶证正页图片地址 | |||
assVehicleRelieve.setVehNegImgUrl(req.getVehicleImagesUrl2()); | |||
assVehicleRelieve.setRelieveStatus(RelieveStatus.UNHANDLED); | |||
if (req.getApplyType() == 2) { | |||
assVehicleRelieve.setUnitImagesUrl(req.getOrgImagesUrl1()); | |||
assVehicleRelieve.setProxyUrl(req.getAuthorizeImagesUrl1()); | |||
assVehicleRelieve.setUnitIdType(IdType.YYZZ); | |||
assVehicleRelieve.setUnitName(req.getOrgName()); | |||
assVehicleRelieve.setUnitId(req.getOrgId()); | |||
} | |||
if (req.getApplyType() == 1 && req.getIsSelf() == 2){ | |||
assVehicleRelieve.setOwnerName(req.getPersonName()); | |||
assVehicleRelieve.setOwnerIdNum(req.getPersonIdNum()); | |||
assVehicleRelieve.setOwnerPosImgUrl(req.getPersonFrontUrl()); | |||
assVehicleRelieve.setOwnerNegImgUrl(req.getPersonBackUrl()); | |||
} | |||
QtkCardInfo qtkCardInfo = (QtkCardInfo) dataStream.get(CARD_INFO); | |||
QtkObuInfo qtkObuInfo = (QtkObuInfo) dataStream.get(OBU_INFO); | |||
if (qtkCardInfo != null) { | |||
assVehicleRelieve.setRelieveCardId(qtkCardInfo.getCardId()); | |||
assOrderinfo.setCardId(qtkCardInfo.getCardId()); | |||
} | |||
if (qtkObuInfo != null) { | |||
assVehicleRelieve.setRelieveObuId(qtkObuInfo.getObuId()); | |||
assOrderinfo.setObuId(qtkObuInfo.getObuId()); | |||
} | |||
assVehicleRelieve.setInsertTime(now); | |||
assVehicleRelieve.setUpdateTime(now); | |||
assOrderinfoRepo.persist(assOrderinfo); | |||
assVehicleRelieveRepo.persist(assVehicleRelieve); | |||
} | |||
@Override | |||
protected ReleasePlateApplyResponse getRes(ReleasePlateApplyRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException, IOException { | |||
return new ReleasePlateApplyResponse(); | |||
} | |||
} |
@@ -1,9 +1,11 @@ | |||
package cn.com.taiji.ias.manager.handler; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.ReleasePlateApplyRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.DeviceLossRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.ResignRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.vehicleInfoChange.VehicleChangeArtificialRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.vehicleInfoChange.VehicleChangeCancelRequest; | |||
import cn.com.taiji.ias.manager.ass.releasePlate.ReleasePlateApplyManager; | |||
import cn.com.taiji.ias.manager.ass.resign.ResignManager; | |||
import cn.com.taiji.ias.manager.device.DeviceLossManager; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
@@ -39,6 +41,8 @@ public class AssServiceHandler extends AbstractIasServiceHandler<AssServiceCmd> | |||
private VehicleChangeArtificialManager vehicleInfoChangeArtificialManager; | |||
@Autowired | |||
private VehicleChangeCancelManager vehicleInfoChangeCancelManager; | |||
@Autowired | |||
private ReleasePlateApplyManager releasePlateApplyManager; | |||
public AssServiceHandler() { | |||
super(IasServiceType.ASS); | |||
@@ -50,6 +54,8 @@ public class AssServiceHandler extends AbstractIasServiceHandler<AssServiceCmd> | |||
switch (cmd) { | |||
case RESIGN: | |||
return resignManager.serviceHandle((ResignRequest) request); | |||
case RELEASEPLATEAPPLY: | |||
return releasePlateApplyManager.serviceHandle((ReleasePlateApplyRequest) request, jsonReq.getIfCode(), jsonReq.getReqId(), reqInfo); | |||
case LOSS: | |||
return deviceLossManager.serviceHandle((DeviceLossRequest) request); | |||
case VEHICLEINFOCHANGE: |
@@ -178,17 +178,28 @@ public abstract class IssueCommManagerImpl { | |||
// cardInfo.setUploadStatus(dsiCardInfo.getUploadStatus()); | |||
// cardInfo.setAccountOrganization(dsiCardInfo.getAccountOrganization()); | |||
// cardInfo.setAccountCardNo(dsiCardInfo.getAccountCardNo()); | |||
if (dsiCardInfo.getCustomer() != null) { | |||
QtkCustomerInfo customerInfo = new QtkCustomerInfo(); | |||
enc(dsiCardInfo.getCustomer(), customerInfo); | |||
// if (dsiCardInfo.getCustomer() != null) { | |||
// QtkCustomerInfo customerInfo = new QtkCustomerInfo(); | |||
// enc(dsiCardInfo.getCustomer(), customerInfo); | |||
// cardInfo.setCustomer(customerInfo); | |||
} | |||
if (dsiCardInfo.getVehicle() != null) { | |||
QtkVehicleInfo vehicleInfo = new QtkVehicleInfo(); | |||
enc(dsiCardInfo.getVehicle(), vehicleInfo); | |||
// } | |||
// if (dsiCardInfo.getVehicle() != null) { | |||
// QtkVehicleInfo vehicleInfo = new QtkVehicleInfo(); | |||
// enc(dsiCardInfo.getVehicle(), vehicleInfo); | |||
// cardInfo.setVehicle(vehicleInfo); | |||
} | |||
// } | |||
cardInfo.setDebitType(dsiCardInfo.getDebitType()); | |||
if (dsiCardInfo.getCardType().equals(211)){ | |||
//储值卡 | |||
cardInfo.setCardTypeNew(CardType.STORED_VALUE_CARD); | |||
}else { | |||
if (0 == dsiCardInfo.getDebitType()){ | |||
cardInfo.setCardTypeNew(CardType.CHARGE_CARD); | |||
} | |||
if (1 == dsiCardInfo.getDebitType()){ | |||
cardInfo.setCardTypeNew(CardType.PRE_CHARGE_CARD); | |||
} | |||
} | |||
} | |||
public static void enc(DsiOBUInfo dsiOBUInfo, QtkObuInfo obuInfo) { |