@@ -89,6 +89,27 @@ public class AssObuSupply extends AbstractStringPropertyUUIDEntity { | |||
@Column(name = "TRANS_CERT_URL") | |||
private String transCertUrl;//道路运输证图片地址 | |||
@Column(name = "CONSIGNEE") | |||
private String consignee;//收货人 | |||
@Column(name = "CONSIGNEE_TEL") | |||
private String consigneeTel;//收货人电话 | |||
@Column(name = "REGION") | |||
private String region;//收货所在地区(省、市、区、街道) | |||
@Column(name = "ADDRESS") | |||
private String address;//收货详细地址 | |||
@Column(name = "POST_CODE") | |||
private String postCode;//邮寄编码 | |||
@Column(name = "TRACKING_NUMBER") | |||
private String trackingNumber;//快递单号 | |||
@Column(name = "COURIER_COMPANY") | |||
private String courierCompany;//快递公司 | |||
@Column(name = "INSERT_TIME") | |||
private LocalDateTime insertTime = LocalDateTime.now(); | |||
@Column(name = "UPDATE_TIME") |
@@ -1,7 +1,7 @@ | |||
package cn.com.taiji.core.entity.dict.ass; | |||
/** | |||
* @desc : 卡类型 | |||
* @desc : 通行费退费审核状态 | |||
*/ | |||
public enum CheckStatus { | |||
NEW("未受理",0){}, |
@@ -176,6 +176,10 @@ public enum OperateType { | |||
DEVICE_CANCEL_APPLY_PAY_QUERY("设备注销申请违约金支付查询"), | |||
DEVICE_CANCEL_APPLY_AUDIT("设备注销申审核"), | |||
DEVICE_CANCEL_CANCEL("设备注销申请取消"), | |||
//增补OBU | |||
OBU_SUPPLY_APPLY("增补OBU申请"), | |||
OBU_SUPPLY_ORDER_PAY("增补OBU订单支付"), | |||
; | |||
private final String value; | |||
@@ -62,4 +62,7 @@ public interface IssueOrderinfoRepo extends AbstractJpaRepo<IssueOrderinfo, Stri | |||
//通过手机号查询用户信息、车辆信息上传后的渠道订单 | |||
@Query("FROM IssueOrderinfo WHERE orderSource = 'CHANNEL' and orderStatus = 'NORMAL' and orderStep not in ('ORDER_INIT','CUSTOMER_UPLOAD','WAITING_AUDIT') and customerTel = ?1 order by insertTime desc") | |||
List<IssueOrderinfo> findAppQueryByMobile(String customerTel); | |||
@Query(" from IssueOrderinfo WHERE vehicleId=?1 and orderStatus in ('NORMAL','ACTIVE') and orderStep not in ('ORDER_INIT','CUSTOMER_UPLOAD') ") | |||
List<IssueOrderinfo> queryByVehicleIdAndStatus(String vehicleId); | |||
} |
@@ -5,6 +5,8 @@ import cn.com.taiji.common.web.ApiResponse; | |||
import cn.com.taiji.iaw.api.MyValidController; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyResponseDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayResponseDTO; | |||
import cn.com.taiji.iaw.manager.ass.AssObuSupplyManager; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiOperation; | |||
@@ -31,11 +33,11 @@ public class AssObuSupplyController extends MyValidController { | |||
} | |||
// @ApiOperation("通行费退费提交申请") | |||
// @PostMapping("/apply") | |||
// public ApiResponse<AssObuSupplyResponseDTO> apply(@Valid @RequestBody AssObuSupplyRequestDTO dto) throws ManagerException { | |||
// return ApiResponse.of(manager.apply(dto)); | |||
// } | |||
@ApiOperation("增补OBU订单支付") | |||
@PostMapping("/orderPay") | |||
public ApiResponse<AssObuSupplyOrderPayResponseDTO> orderPay(@Valid @RequestBody AssObuSupplyOrderPayRequestDTO dto) throws ManagerException { | |||
return ApiResponse.of(manager.orderPay(dto)); | |||
} | |||
@@ -243,4 +243,10 @@ public class OrderController extends MyValidController { | |||
issueOrderManage.uploadInstallPhoto(reqDto); | |||
return ApiResponse.success(); | |||
} | |||
@ApiOperation(value = "查询订单是否需要跳转") | |||
@PostMapping(value = "/normalOrderQuery") | |||
public ApiResponse<NormalOrderQueryResponseDTO> normalOrderQuery(@Valid @RequestBody NormalOrderQueryRequestDTO reqDto) throws ManagerException { | |||
return ApiResponse.of(issueOrderManage.normalOrderQuery(reqDto)).setMessage("查询成功"); | |||
} | |||
} |
@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
import org.apache.commons.lang.StringUtils; | |||
import javax.validation.constraints.NotBlank; | |||
import javax.validation.constraints.NotNull; | |||
@@ -80,20 +81,39 @@ public class AssObuSupplyApplyRequestDTO extends AbstractBizRequestDTO { | |||
private String transCertUrl; | |||
@ApiModelProperty(value = "收货人") | |||
private String consignee; | |||
@ApiModelProperty(value = "收货人电话") | |||
private String consigneeTel; | |||
@ApiModelProperty(value = "收货所在地区(省、市、区、街道)") | |||
private String region; | |||
@ApiModelProperty(value = "收货详细地址") | |||
private String address; | |||
protected void validate(ViolationValidator validator){ | |||
if (getOrderSource() == SourceType.SERVICE_HALL){ | |||
validator.validFieldNotBlank("agentName",agentName); | |||
validator.validFieldNotNull("agentIdType",agentIdType); | |||
validator.validFieldNotBlank("agentIdNum",agentIdNum); | |||
validator.validFieldNotBlank("agentTel",agentTel); | |||
validator.validFieldNotBlank("agentAddress",agentAddress); | |||
validator.validFieldNotBlank("agentIdVld",agentIdVld); | |||
validator.validFieldNotBlank("agentPosImgUrl",agentPosImgUrl); | |||
validator.validFieldNotBlank("agentNegImgUrl",agentNegImgUrl); | |||
validator.validField("agentName",StringUtils.isEmpty(agentName), "办理人姓名不能为空"); | |||
validator.validField("agentIdType",agentIdType == null, "办理人证件类型不能为空"); | |||
validator.validField("agentIdNum",StringUtils.isEmpty(agentIdNum), "办理人证件号码不能为空"); | |||
validator.validField("agentTel",StringUtils.isEmpty(agentTel), "办理人手机号不能为空"); | |||
validator.validField("agentAddress",StringUtils.isEmpty(agentAddress), "办理人证件地址不能为空"); | |||
validator.validField("agentIdVld",StringUtils.isEmpty(agentIdVld), "办理人证件有效期不能为空"); | |||
validator.validField("agentPosImgUrl",StringUtils.isEmpty(agentPosImgUrl), "办理人正面照片不能为空"); | |||
validator.validField("agentNegImgUrl",StringUtils.isEmpty(agentNegImgUrl), "办理人反面照片不能为空"); | |||
if (!agentName.equals(ownerName)){ | |||
validator.validFieldNotBlank("proxyUrl",proxyUrl); | |||
validator.validField("proxyUrl",StringUtils.isEmpty(proxyUrl), "授权书照片地址不能为空"); | |||
} | |||
} | |||
if (needPost){ | |||
validator.validField("consignee", StringUtils.isEmpty(consignee),"收货人不能为空"); | |||
validator.validField("consigneeTel", StringUtils.isEmpty(consigneeTel),"收货人电话不能为空"); | |||
validator.validField("region", StringUtils.isEmpty(region),"收货所在地区(省、市、区、街道)不能为空"); | |||
validator.validField("address", StringUtils.isEmpty(address),"收货详细地址不能为空"); | |||
} | |||
} | |||
@@ -2,6 +2,7 @@ package cn.com.taiji.iaw.dto.ass.obuSupply; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
@@ -13,4 +14,10 @@ import lombok.experimental.Accessors; | |||
@Accessors(chain = true) | |||
public class AssObuSupplyApplyResponseDTO extends BaseModel { | |||
@ApiModelProperty(value = "订单号") | |||
private String orderNo; | |||
public AssObuSupplyApplyResponseDTO(String orderNo){ | |||
this.orderNo = orderNo; | |||
} | |||
} |
@@ -0,0 +1,23 @@ | |||
package cn.com.taiji.iaw.dto.ass.obuSupply; | |||
import cn.com.taiji.core.dto.AbstractBizRequestDTO; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
import javax.validation.constraints.NotBlank; | |||
@ApiModel(description = "增补OBU订单支付请求") | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class AssObuSupplyOrderPayRequestDTO extends AbstractBizRequestDTO { | |||
@ApiModelProperty(value = "订单号") | |||
@NotBlank(message = "订单号不能为空") | |||
private String orderNo; | |||
} |
@@ -0,0 +1,17 @@ | |||
package cn.com.taiji.iaw.dto.ass.obuSupply; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import lombok.experimental.Accessors; | |||
@ApiModel(description = "增补OBU订单支付响应") | |||
@Getter | |||
@Setter | |||
@Accessors(chain = true) | |||
public class AssObuSupplyOrderPayResponseDTO extends BaseModel { | |||
} |
@@ -0,0 +1,32 @@ | |||
package cn.com.taiji.iaw.dto.issue.order; | |||
import cn.com.taiji.common.model.BaseModel; | |||
import cn.com.taiji.core.entity.dict.user.RbacSource; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
import javax.validation.constraints.NotBlank; | |||
@Data | |||
@ApiModel(description = "查询订单是否需要跳转") | |||
public class NormalOrderQueryRequestDTO extends BaseModel { | |||
@ApiModelProperty(value = "车辆编号") | |||
@NotBlank(message = "车辆编号不能为空") | |||
private String vehicleId; | |||
@ApiModelProperty(value = "系统来源") | |||
private RbacSource source; | |||
@ApiModelProperty(value = "事务类型") | |||
private String businessType; | |||
@ApiModelProperty(value = "员工编号") | |||
private String staffId; | |||
@ApiModelProperty(value = "订单号") | |||
private String orderNo; | |||
} |
@@ -0,0 +1,20 @@ | |||
package cn.com.taiji.iaw.dto.issue.order; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
@Data | |||
@ApiModel(description = "查询订单是否需要跳转响应") | |||
public class NormalOrderQueryResponseDTO { | |||
@ApiModelProperty(value = "on:拦截,off:不拦截") | |||
private String pass="off"; | |||
@ApiModelProperty(value = "0:未激活,1:激活") | |||
private String newStatus="0"; | |||
@ApiModelProperty(value = "提示信息") | |||
private String msg; | |||
} |
@@ -3,6 +3,8 @@ package cn.com.taiji.iaw.manager.ass; | |||
import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyResponseDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayResponseDTO; | |||
/** | |||
* @Auther: humh | |||
@@ -15,4 +17,5 @@ public interface AssObuSupplyManager { | |||
AssObuSupplyApplyResponseDTO apply(AssObuSupplyApplyRequestDTO dto) throws ManagerException; | |||
AssObuSupplyOrderPayResponseDTO orderPay(AssObuSupplyOrderPayRequestDTO dto) throws ManagerException; | |||
} |
@@ -12,12 +12,15 @@ 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.CardType; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import cn.com.taiji.core.entity.dict.log.OperateType; | |||
import cn.com.taiji.core.repo.jpa.ass.AssObuSupplyRepo; | |||
import cn.com.taiji.core.repo.jpa.ass.AssOrderinfoRepo; | |||
import cn.com.taiji.core.repo.jpa.basic.QtkCustomerInfoRepo; | |||
import cn.com.taiji.core.repo.jpa.basic.QtkVehicleInfoRepo; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyApplyResponseDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayRequestDTO; | |||
import cn.com.taiji.iaw.dto.ass.obuSupply.AssObuSupplyOrderPayResponseDTO; | |||
import cn.com.taiji.iaw.manager.AbstractIawManager; | |||
import cn.com.taiji.iaw.manager.comm.VehicleInfoManagerImpl; | |||
import cn.com.taiji.iaw.model.MyFinals; | |||
@@ -73,8 +76,36 @@ public class AssObuSupplyManagerImpl extends AbstractIawManager implements AssOb | |||
obuSupplyRepo.save(obuSupply); | |||
//生成售后订单 | |||
createAssOrderinfo(vehicleInfo, orderNo, dto, model); | |||
//日志 | |||
persistOperateLog(OperateType.OBU_SUPPLY_APPLY, obuSupply.getId(), dto.getOrderSource(), findOpenIdByToken(dto.getAccessToken()), "增补OBU申请"); | |||
return new AssObuSupplyApplyResponseDTO(orderNo); | |||
} | |||
@Override | |||
public AssObuSupplyOrderPayResponseDTO orderPay(AssObuSupplyOrderPayRequestDTO dto) throws ManagerException { | |||
AssOrderinfo orderinfo = orderinfoRepo.findByOrderNo(dto.getOrderNo()); | |||
if (orderinfo == null){ | |||
throw new ManagerException("为查询到该订单"); | |||
} | |||
//支付 | |||
return new AssObuSupplyApplyResponseDTO(); | |||
//更新订单状态 | |||
LocalDateTime now = LocalDateTime.now(); | |||
if (orderinfo.getArtificialStatus() == 1){ | |||
orderinfo.setOrderStep(AssOrderStep.WAITING_AUDIT); | |||
orderinfo.setUpdateTime(now); | |||
}else if (orderinfo.getArtificialStatus() == 2){ | |||
orderinfo.setOrderStep(AssOrderStep.WAITING_SEND); | |||
orderinfo.setAutoAuditTime(now); | |||
orderinfo.setUpdateTime(now); | |||
}else { | |||
throw new ManagerException("人工审核状态异常,请联系管理员"); | |||
} | |||
//日志 | |||
persistOperateLog(OperateType.OBU_SUPPLY_ORDER_PAY, orderinfo.getId(), dto.getOrderSource(), findOpenIdByToken(dto.getAccessToken()), "增补OBU订单支付"); | |||
return new AssObuSupplyOrderPayResponseDTO(); | |||
} | |||
private void createAssOrderinfo(QtkVehicleInfo vehicleInfo, String orderNo, AssObuSupplyApplyRequestDTO dto, VehicleInfoQueryDeviceModel model) throws ServiceHandleException { | |||
@@ -109,7 +140,6 @@ public class AssObuSupplyManagerImpl extends AbstractIawManager implements AssOb | |||
}else { | |||
orderinfo.setArtificialStatus(2); | |||
} | |||
orderinfoRepo.save(orderinfo); | |||
} | |||
@@ -80,4 +80,6 @@ public interface IssueOrderManage { | |||
void uploadInstallPhoto(UploadInstallPhotoReqDTO reqDto) throws ManagerException; | |||
UpInPhotoCheckResDTO upInPhotoCheck(UpInPhotoCheckReqDTO reqDto) throws ManagerException; | |||
NormalOrderQueryResponseDTO normalOrderQuery(NormalOrderQueryRequestDTO reqDto); | |||
} |
@@ -30,6 +30,7 @@ import cn.com.taiji.iaw.dto.issue.order.*; | |||
import cn.com.taiji.iaw.manager.AbstractIawManager; | |||
import cn.com.taiji.iaw.repo.jpa.request.issue.IssueOrderaPageRequest; | |||
import cn.com.taiji.iaw.repo.jpa.request.issue.IssueOrdermPageRequest; | |||
import cn.hutool.core.util.ObjectUtil; | |||
import cn.hutool.core.util.StrUtil; | |||
import cn.hutool.extra.qrcode.QrCodeUtil; | |||
import cn.hutool.extra.qrcode.QrConfig; | |||
@@ -38,6 +39,7 @@ import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.beans.factory.annotation.Value; | |||
import org.springframework.stereotype.Service; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import org.springframework.util.CollectionUtils; | |||
import java.awt.*; | |||
import java.io.*; | |||
@@ -638,6 +640,20 @@ public class IssueOrderManageImpl extends AbstractIawManager implements IssueOrd | |||
return resDTO; | |||
} | |||
@Override | |||
public NormalOrderQueryResponseDTO normalOrderQuery(NormalOrderQueryRequestDTO reqDto) { | |||
NormalOrderQueryResponseDTO response = new NormalOrderQueryResponseDTO(); | |||
List<IssueOrderinfo> orderinfos = issueOrderinfoRepo.queryByVehicleIdAndStatus(reqDto.getVehicleId()); | |||
if (!CollectionUtils.isEmpty(orderinfos)) { | |||
// 配置了渠道,包含就拦截,不包含就放行 | |||
response.setPass("on"); | |||
if (IssueOrderStatus.ACTIVE == orderinfos.get(0).getOrderStatus()) { | |||
response.setNewStatus("1"); | |||
} | |||
} | |||
return response; | |||
} | |||
//校验发行订单是否存在 | |||
private IssueOrderinfo checkOrder(String orderNo) throws ManagerException { |
@@ -7,7 +7,6 @@ import cn.com.taiji.core.entity.ass.AssRefundApplyInfo; | |||
import cn.com.taiji.core.entity.ass.AssRefundProgressInfo; | |||
import cn.com.taiji.core.entity.basic.QtkCardInfo; | |||
import cn.com.taiji.core.entity.dict.ass.CheckStatus; | |||
import cn.com.taiji.core.entity.dict.ass.RefundPath; | |||
import cn.com.taiji.core.entity.dict.ass.RefundProgress; | |||
import cn.com.taiji.core.entity.dict.basic.CardStatus; | |||
import cn.com.taiji.core.entity.dict.basic.CardType; | |||
@@ -29,7 +28,6 @@ import java.text.SimpleDateFormat; | |||
import java.time.LocalDateTime; | |||
import java.time.format.DateTimeFormatter; | |||
import java.util.Arrays; | |||
import java.util.Date; | |||
import java.util.List; | |||
import java.util.UUID; | |||
import java.util.stream.Collectors; |
@@ -0,0 +1,38 @@ | |||
package cn.com.taiji.oqs.client.order; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.model.comm.protocol.ias.order.IssueOrderNormalRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.order.IssueOrderNormalResponse; | |||
import cn.com.taiji.ias.Application; | |||
import cn.com.taiji.ias.manager.AbstractCommManager; | |||
import org.junit.jupiter.api.Test; | |||
import org.springframework.boot.test.context.SpringBootTest; | |||
/** | |||
* @Auther: humh | |||
* @Description: | |||
* @Date: 2025/5/12 10:58 | |||
* @email: huminghao@mail.taiji.com.cn | |||
* @version: 1.0 | |||
*/ | |||
@SpringBootTest(classes = Application.class) | |||
public class TestIssueOrderServiceHandler extends AbstractCommManager { | |||
// @Autowired | |||
// private IssueOrderNormalManager issueOrderNormalManager; | |||
@Test | |||
public void getIssueOrderNormalJsonRepeatTest(){ | |||
IssueOrderNormalRequest req = new IssueOrderNormalRequest(); | |||
req.setVehicleId("贵ZSNB60_0");//贵Z10024 | |||
try { | |||
IssueOrderNormalResponse res = jsonPostRepeat(req); | |||
System.out.println(res); | |||
} catch (ServiceHandleException e) { | |||
throw new RuntimeException(e); | |||
} | |||
logger.info("。。"); | |||
} | |||
} |
@@ -0,0 +1,37 @@ | |||
package cn.com.taiji.oqs.client.temp; | |||
import cn.com.taiji.core.entity.basic.QtkServicehallLocation; | |||
import cn.com.taiji.core.repo.jpa.basic.QtkServicehallLocationRepo; | |||
import cn.com.taiji.ias.Application; | |||
import cn.com.taiji.ias.manager.AbstractCommManager; | |||
import org.junit.jupiter.api.Test; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.boot.test.context.SpringBootTest; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import java.util.List; | |||
import java.util.stream.Collectors; | |||
/** | |||
* @Auther: humh | |||
* @Description: | |||
* @Date: 2025/5/12 10:58 | |||
* @email: huminghao@mail.taiji.com.cn | |||
* @version: 1.0 | |||
*/ | |||
@SpringBootTest(classes = Application.class) | |||
public class TestTempServiceHandler extends AbstractCommManager { | |||
@Autowired | |||
private QtkServicehallLocationRepo servicehallLocationRepo; | |||
// @Test | |||
// public void test() { | |||
// logger.info("开始"); | |||
// List<QtkServicehallLocation> qtkServicehallLocations = servicehallLocationRepo.queryTemp().stream() | |||
// .peek(i -> i.setAddress(i.getAddress1())) | |||
// .collect(Collectors.toList()); | |||
// servicehallLocationRepo.saveAll(qtkServicehallLocations); | |||
// System.out.println(qtkServicehallLocations); | |||
// } | |||
} |