@@ -0,0 +1,74 @@ | |||
package cn.com.taiji.core.entity.ass; | |||
import java.time.LocalDateTime; | |||
import javax.persistence.*; | |||
import javax.validation.constraints.NotBlank; | |||
import javax.validation.constraints.NotNull; | |||
import javax.validation.constraints.Size; | |||
import cn.com.taiji.common.entity.StringPropertyUUIDEntity; | |||
import cn.com.taiji.core.entity.dict.AuditStatus; | |||
import cn.com.taiji.core.entity.dict.basic.IdType; | |||
import cn.com.taiji.core.entity.dict.basic.SourceType; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
/** | |||
* 补缴订单表; | |||
* | |||
*/ | |||
@Getter | |||
@Setter | |||
@Entity | |||
@Table(name = "ASS_REIMBURSE_ORDER") | |||
public class AssReimburseOrder extends StringPropertyUUIDEntity { | |||
@Column(name = "INSERT_TIME") | |||
private LocalDateTime insertTime = LocalDateTime.now();//创建时间 | |||
@Column(name = "UPDATE_TIME") | |||
private LocalDateTime updateTime = LocalDateTime.now();//更新时间 | |||
@NotBlank | |||
@Column(name = "ORDER_ID", length = 255) | |||
private String orderId; // 订单id | |||
@NotNull | |||
@Column(name = "SOURCE_TYPE") | |||
@Enumerated(EnumType.STRING) | |||
private SourceType sourceType;//来源 | |||
@NotBlank | |||
@Column(name = "OPERATE_STAFF_ID") | |||
private String operateStaffId;// 录入员工工号 | |||
@NotBlank | |||
@Column(name = "USER_ID") | |||
private String userid;//用户编号 | |||
@NotBlank | |||
@Column(name = "CARD_ID") | |||
private String cardId;//卡号 | |||
@NotBlank | |||
@Column(name = "VEHICLE_ID") | |||
private String vehicleId; | |||
@NotBlank | |||
@Column(name = "AGENCY_ID") | |||
private String agencyId; | |||
@NotBlank | |||
@Size(max = 32) | |||
@Column(name = "PAY_ORDER_NO") | |||
private String payOrderNo;//支付订单编号 自己规则生成 商户订单号 | |||
@Size(max = 255) | |||
@Column(name = "REASON") | |||
private String reason;//审核意见 | |||
@NotNull | |||
@Column(name = "STATUS") | |||
@Enumerated(EnumType.STRING) | |||
private AuditStatus status;//审核状态 | |||
@Column(name ="REIMBURSE_FEE") | |||
private String reimburseFee; | |||
@Column(name = "CLOSED_TIME") | |||
private LocalDateTime closedTime;//关闭时间 | |||
@Column(name = "CLOSED_STAFF_ID") | |||
private String closedStaffId;// 关闭员工工号 | |||
@Column(name = "CLOSED_REASON") | |||
private String closedReason;// 关闭原因 | |||
} |
@@ -21,6 +21,7 @@ public enum ProductAfterType { | |||
CHANGECARD("更换卡"), | |||
CHANGEOBU("更换签"), | |||
CHANGEALL("更换卡签"), | |||
REPAIROBU("增补obu"), | |||
; | |||
private String value; | |||
@@ -145,6 +145,8 @@ public enum OperateType { | |||
//车辆信息修改 | |||
CHANGE_VEHICLE_APPLY("车辆信息修改申请"), | |||
CHANGE_VEHICLE_AUDIT("车辆信息修改审核"), | |||
CHANGE_VEHICLE_SEND("车辆信息修改发货"), | |||
CHANGE_VEHICLE_RECE("车辆信息修改确认收货"), | |||
//客户信息修改 | |||
CUSTOMER_INFO_CHANGE_APPLY_SELF("个人客户信息修改申请"), | |||
CUSTOMER_INFO_CHANGE_APPLY_UNIT("单位客户信息修改申请"), |
@@ -91,6 +91,8 @@ public class IssueProduct extends StringPropertyUUIDEntity { | |||
private Long changeObuFee;//售后——更换签费用 | |||
@Column(name = "CHANGE_ALL_FEE") | |||
private Long changeAllFee;//售后——更换卡签费用 | |||
@Column(name = "REPAIR_OBU_FEE") | |||
private Long repairObuFee;//售后——增补OBU费用 | |||
@Column(name = "HANDLE_FEE") | |||
private Long handleFee;//办理费——权益费用 | |||
@Column(name = "MARGIN_FEE") |
@@ -0,0 +1,49 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ias.ass; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest; | |||
import cn.com.taiji.core.model.comm.protocol.constraint.FixedLength; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
import javax.validation.constraints.NotBlank; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/9/16 10:07 | |||
* @Filename:AssOrderSendRequest | |||
* @description: 售后发货信息 | |||
*/ | |||
@Getter | |||
@Setter | |||
public class AssOrderSendRequest extends AbstractSignTypeRequest<AssOrderSendResponse> { | |||
public AssOrderSendRequest() { | |||
super(AssServiceCmd.SENDINFO); | |||
} | |||
@NotBlank | |||
private String openId;//发货人OpenId | |||
@NotBlank | |||
private String orderNo;//售后订单编号 | |||
@NotBlank | |||
private String trackingNumber;//快递编号 | |||
@NotBlank | |||
/*** 快递公司*/ | |||
private String courierCompany;//快递公司 | |||
@FixedLength(length = 20) | |||
@NotBlank | |||
private String cardId;//卡编号 | |||
@FixedLength(length = 16) | |||
@NotBlank | |||
private String obuId;//签编号 | |||
@NotBlank | |||
private String consignee;// 收货人 | |||
@NotBlank | |||
private String consigneeTel;// 收货人电话 | |||
@NotBlank | |||
private String region;// 收货所在地区(省、市、区、街道) | |||
private String address;// 收货详细地址 | |||
// @NotBlank | |||
private String postCode;//邮政编码 | |||
} |
@@ -0,0 +1,20 @@ | |||
package cn.com.taiji.core.model.comm.protocol.ias.ass; | |||
import cn.com.taiji.core.entity.dict.log.OperateType; | |||
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; | |||
import lombok.Getter; | |||
import lombok.Setter; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/9/16 10:12 | |||
* @Filename:AssOrderSendResponse | |||
* @description: | |||
*/ | |||
@Getter | |||
@Setter | |||
public class AssOrderSendResponse extends AbstractSignTypeResponse { | |||
private String id;//售后表id(返给调用者记录日志) | |||
private OperateType type;//操作类型(返给调用者记录日志) | |||
} |
@@ -18,7 +18,7 @@ public enum AssServiceCmd implements SignServiceCommand { | |||
CANCLEPAY("注销违约金支付", DeviceCancelPayRequest.class){}, | |||
CANCLEPAYQUERY("注销违约金支付查询", DeviceCancelPayQueryRequest.class){}, | |||
PAYINFO("售后支付信息接收", AssOrderPayInfoRequest.class){}, | |||
// SENDINFO("发货信息", CancelApplyRequest.class){}, | |||
SENDINFO("发货信息", AssOrderSendRequest.class){}, | |||
LOSS("挂失/解除挂失", DeviceLossRequest.class){}, | |||
VEHICLECHANGE("车辆信息更改申请", VehicleChangeApllyRequest.class), | |||
VEHICLEINFOCHANGE("车辆信息更改", VehicleInfoChangeRequest.class), |
@@ -30,6 +30,9 @@ public interface IssueProductPayRepo extends AbstractJpaRepo<IssueProductPay, St | |||
@Query("delete from IssueProductPay where proId = ?1") | |||
int deleteByProId(String proId); | |||
//通过费用类别,费用类型,产品ID查询 | |||
IssueProductPay findByFeeCategoryAndAndFeeTypeAndReleaseId(FeeCategory feeCategory,String feeType,String releaseId); | |||
List<IssueProductPay> findByFeeCategoryAndReleaseId(FeeCategory feeCategory,String releaseId); | |||
List<IssueProductPay> findByReleaseId(String releaseId); |
@@ -6,6 +6,7 @@ import cn.com.taiji.iaw.api.MyValidController; | |||
import cn.com.taiji.iaw.dto.ass.sign.ResignCheckResDTO; | |||
import cn.com.taiji.iaw.dto.ass.sign.ResignResponseDTO; | |||
import cn.com.taiji.iaw.dto.ass.vehicleChange.*; | |||
import cn.com.taiji.iaw.dto.issue.order.OrderCommDTO; | |||
import cn.com.taiji.iaw.dto.issue.order.PayApplyReqDTO; | |||
import cn.com.taiji.iaw.dto.issue.order.PayApplyResDTO; | |||
import cn.com.taiji.iaw.manager.ass.VehicleChangeManger; | |||
@@ -79,6 +80,12 @@ public class VehicleChangeController extends MyValidController { | |||
// todo 发货 managew写 | |||
// todo 确认收货 | |||
@ApiOperation(value = "确认收货") | |||
@PostMapping(value = "/orderReceiveGoods") | |||
public ApiResponse<?> processReceiveGoods(@Valid @RequestBody OrderCommDTO reqDto) throws ManagerException { | |||
manager.orderReceiveGoods(reqDto); | |||
return ApiResponse.success().setMessage("收货成功"); | |||
} | |||
// @ApiOperation("设备升级") | |||
// @PostMapping("/deviceUp") |
@@ -4,6 +4,7 @@ import cn.com.taiji.common.manager.ManagerException; | |||
import cn.com.taiji.iaw.dto.ass.sign.ResignCheckResDTO; | |||
import cn.com.taiji.iaw.dto.ass.sign.ResignResponseDTO; | |||
import cn.com.taiji.iaw.dto.ass.vehicleChange.*; | |||
import cn.com.taiji.iaw.dto.issue.order.OrderCommDTO; | |||
import cn.com.taiji.iaw.dto.issue.order.PayApplyReqDTO; | |||
import cn.com.taiji.iaw.dto.issue.order.PayApplyResDTO; | |||
@@ -27,4 +28,6 @@ public interface VehicleChangeManger { | |||
VehicleChangePayQyResDTO payQuery(VehicleChangePayQyReqDTO reqDto) throws ManagerException; | |||
PayApplyResDTO payApply(PayApplyReqDTO reqDto) throws ManagerException; | |||
void orderReceiveGoods(OrderCommDTO reqDto) throws ManagerException; | |||
} |
@@ -12,11 +12,14 @@ import cn.com.taiji.core.entity.dict.ass.AssOrderStatus; | |||
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.SourceType; | |||
import cn.com.taiji.core.entity.dict.issue.IssueOrderStep; | |||
import cn.com.taiji.core.entity.dict.issue.OrderPayStatus; | |||
import cn.com.taiji.core.entity.dict.issue.OrderType; | |||
import cn.com.taiji.core.entity.dict.issue.ShippingStatus; | |||
import cn.com.taiji.core.entity.dict.log.OperateType; | |||
import cn.com.taiji.core.entity.issue.IssueOrderPay; | |||
import cn.com.taiji.core.entity.issue.IssueOrderPost; | |||
import cn.com.taiji.core.entity.issue.IssueOrderinfo; | |||
import cn.com.taiji.core.entity.user.AccountInfo; | |||
import cn.com.taiji.core.entity.user.Staff; | |||
import cn.com.taiji.core.manager.tools.issue.QdCallUtil; | |||
@@ -35,10 +38,12 @@ import cn.com.taiji.core.repo.jpa.ass.AssVehicleInfoChangeRepo; | |||
import cn.com.taiji.core.repo.jpa.basic.QtkCardInfoRepo; | |||
import cn.com.taiji.core.repo.jpa.basic.QtkVehicleInfoRepo; | |||
import cn.com.taiji.core.repo.jpa.issue.IssueOrderPayRepo; | |||
import cn.com.taiji.core.repo.jpa.issue.IssueOrderinfoPostRepo; | |||
import cn.com.taiji.core.repo.jpa.user.StaffRepo; | |||
import cn.com.taiji.iaw.dto.ass.sign.ResignCheckResDTO; | |||
import cn.com.taiji.iaw.dto.ass.sign.ResignResponseDTO; | |||
import cn.com.taiji.iaw.dto.ass.vehicleChange.*; | |||
import cn.com.taiji.iaw.dto.issue.order.OrderCommDTO; | |||
import cn.com.taiji.iaw.dto.issue.order.PayApplyReqDTO; | |||
import cn.com.taiji.iaw.dto.issue.order.PayApplyResDTO; | |||
import cn.com.taiji.iaw.manager.AbstractIawManager; | |||
@@ -49,6 +54,7 @@ import cn.com.taiji.iaw.model.ass.releasePlate.OwnerInfo; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.time.LocalDateTime; | |||
import java.util.List; | |||
import java.util.stream.Collectors; | |||
@@ -77,6 +83,8 @@ public class VehicleChangeMangerImpl extends AbstractIawManager implements Vehic | |||
private StaffRepo staffRepo; | |||
@Autowired | |||
private IssueOrderPayRepo issueOrderPayRepo; | |||
@Autowired | |||
private IssueOrderinfoPostRepo issueOrderinfoPostRepo; | |||
@@ -216,6 +224,35 @@ public class VehicleChangeMangerImpl extends AbstractIawManager implements Vehic | |||
return copyProperties(response, new PayApplyResDTO()); | |||
} | |||
@Override | |||
public void orderReceiveGoods(OrderCommDTO reqDto) throws ManagerException { | |||
AssOrderinfo assOrderinfo = checkAssOrder(reqDto.getOrderNo()); | |||
if (AssOrderStep.WAITING_RECEIVE != assOrderinfo.getOrderStep()) { | |||
throw new ManagerException("当前订单阶段{" + assOrderinfo.getOrderStep().getStep() + "}不可收货"); | |||
} | |||
List<IssueOrderPost> postList = issueOrderinfoPostRepo.findByOrderNoList(reqDto.getOrderNo(), OrderType.ISSUE); | |||
if (isEmpty(postList)) { | |||
throw new ManagerException("当前订单没有发货,无法进行收货"); | |||
} | |||
LocalDateTime now = LocalDateTime.now(); | |||
//更新申请表 | |||
AssVehicleInfoChange vehicleInfoChange = assVehicleInfoChangeRepo.findByOrderNo(reqDto.getOrderNo()); | |||
vehicleInfoChange.setShippingStatus(ShippingStatus.RECEIVED); | |||
vehicleInfoChange.setUpdateTime(now); | |||
assVehicleInfoChangeRepo.merge(vehicleInfoChange); | |||
//更新售后表 | |||
assOrderinfo.setOrderStep(AssOrderStep.WAITING_ACTIVE); | |||
assOrderinfo.setUpdateTime(now); | |||
assOrderinfoRepo.merge(assOrderinfo); | |||
//更新发货表 | |||
String openId = findOpenIdByToken(reqDto.getAccessToken()); | |||
IssueOrderPost issueOrderPost = postList.get(0); | |||
issueOrderPost.setReceivingTime(now); | |||
issueOrderPost.setReceiveOpId(openId); | |||
issueOrderinfoPostRepo.merge(issueOrderPost); | |||
sysPersistOperateLog(OperateType.CHANGE_VEHICLE_RECE,assOrderinfo.getId(),reqDto.getOrderSource(), openId,"车辆信息修改确认收货"); | |||
} | |||
@Override | |||
public ResignCheckResDTO signCheck(VehicleChangeSignReqDTO dto) throws ManagerException { | |||
AssOrderinfo assOrderinfo = checkAssOrder(dto.getOrderNo()); |
@@ -7,6 +7,7 @@ import cn.com.taiji.managew.api.MyValidController; | |||
import cn.com.taiji.managew.dto.ass.AssOrderCancelDTO; | |||
import cn.com.taiji.managew.dto.ass.AssOrderinfoPageRequestDTO; | |||
import cn.com.taiji.managew.dto.ass.AssReviewRequestDTO; | |||
import cn.com.taiji.managew.dto.issueOrder.OrderDeliverGoodsReqDTO; | |||
import cn.com.taiji.managew.manager.ass.AssOrderinfoManager; | |||
import io.swagger.annotations.Api; | |||
import io.swagger.annotations.ApiOperation; | |||
@@ -52,6 +53,12 @@ public class AssOrderinfoController extends MyValidController { | |||
manager.cancel(req); | |||
return ApiResponse.success(); | |||
} | |||
@ApiOperation("售后订单发货") | |||
@PostMapping("/orderSend") | |||
public ApiResponse<?> orderSend(@Valid @RequestBody OrderDeliverGoodsReqDTO req) throws ManagerException { | |||
manager.orderSend(req); | |||
return ApiResponse.success(); | |||
} | |||
} |
@@ -149,5 +149,11 @@ public class ProductAddRequestDto extends AbstractStaffBizRequestDTO { | |||
"使用费或办理费必填,并且只能填写一种"); | |||
validator.validField("releaseId",!releaseId.matches("\\d+"),"请输入数字类型"); | |||
// validator.validField("",promotionMode==2 && !needPay,"线下推广模式需要支付"); | |||
if (needPay && ObjectUtil.isNotEmpty(processingFeeList)){ | |||
for (ProcessingFee processingFee : processingFeeList) { | |||
validator.validField("",processingFee.getAmount()<=0,"办理费不可<=0"); | |||
} | |||
} | |||
} | |||
} |
@@ -6,6 +6,7 @@ import cn.com.taiji.common.model.dao.Pagination; | |||
import cn.com.taiji.managew.dto.ass.AssOrderCancelDTO; | |||
import cn.com.taiji.managew.dto.ass.AssOrderinfoPageRequestDTO; | |||
import cn.com.taiji.managew.dto.ass.AssReviewRequestDTO; | |||
import cn.com.taiji.managew.dto.issueOrder.OrderDeliverGoodsReqDTO; | |||
/** | |||
* @Auther: humh | |||
@@ -20,4 +21,6 @@ public interface AssOrderinfoManager { | |||
void review(AssReviewRequestDTO req) throws ManagerException; | |||
void cancel(AssOrderCancelDTO req) throws ManagerException; | |||
void orderSend(OrderDeliverGoodsReqDTO req) throws ManagerException; | |||
} |
@@ -1,20 +1,19 @@ | |||
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.common.model.dao.Pagination; | |||
import cn.com.taiji.core.entity.ass.AssOrderinfo; | |||
import cn.com.taiji.core.entity.dict.log.OperateType; | |||
import cn.com.taiji.core.entity.user.Staff; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.AbstractAssResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.AssOrderAuditRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.AssOrderAuditResponse; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.AssOrderCancelRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.*; | |||
import cn.com.taiji.core.repo.jpa.ass.AssOrderinfoRepo; | |||
import cn.com.taiji.core.repo.jpa.user.StaffRepo; | |||
import cn.com.taiji.core.repo.request.ass.AssOrderinfoPageRequest; | |||
import cn.com.taiji.managew.dto.ass.AssOrderCancelDTO; | |||
import cn.com.taiji.managew.dto.ass.AssOrderinfoPageRequestDTO; | |||
import cn.com.taiji.managew.dto.ass.AssReviewRequestDTO; | |||
import cn.com.taiji.managew.dto.issueOrder.OrderDeliverGoodsReqDTO; | |||
import cn.com.taiji.managew.manager.AbstractManagewManager; | |||
import cn.com.taiji.managew.model.MyFinals; | |||
import cn.com.taiji.managew.model.ass.AssOrderInfoModel; | |||
@@ -69,6 +68,15 @@ public class AssOrderinfoManagerImpl extends AbstractManagewManager implements A | |||
sysPersistOperateLog(OperateType.ORDER_CANCEL,req.getOrderNo(),req.getOrderSource(),findOpenIdByToken(req.getAccessToken()),"订单取消"); | |||
} | |||
@Override | |||
public void orderSend(OrderDeliverGoodsReqDTO req) throws ManagerException { | |||
AssOrderSendRequest request = copyProperties(req,new AssOrderSendRequest()); | |||
String openId = findOpenIdByToken(req.getAccessToken()); | |||
request.setOpenId(openId); | |||
AssOrderSendResponse response = jsonPostRepeat(request); | |||
sysPersistOperateLog(response.getType(),response.getId(),req.getOrderSource(), openId,response.getType().getValue()); | |||
} | |||
private AssOrderInfoModel toModel(AssOrderinfo orderInfo) { | |||
AssOrderInfoModel model = new AssOrderInfoModel(); | |||
copyProperties(orderInfo, model); |
@@ -99,6 +99,8 @@ public class ProductManagerImpl extends AbstractManagewManager implements Produc | |||
break; | |||
case CHANGEALL: | |||
issueProduct.setChangeAllFee(afterSaleFee.getAmount()); | |||
case REPAIROBU: | |||
issueProduct.setRepairObuFee(afterSaleFee.getAmount()); | |||
} | |||
}); | |||
} | |||
@@ -267,6 +269,8 @@ public class ProductManagerImpl extends AbstractManagewManager implements Produc | |||
break; | |||
case CHANGEALL: | |||
issueProduct.setChangeAllFee(afterSaleFee.getAmount()); | |||
case REPAIROBU: | |||
issueProduct.setRepairObuFee(afterSaleFee.getAmount()); | |||
} | |||
}); | |||
} else { | |||
@@ -389,6 +393,13 @@ public class ProductManagerImpl extends AbstractManagewManager implements Produc | |||
afterSaleFee.setAmount(issueProduct.getChangeAllFee()); | |||
afterSaleFeeList.add(afterSaleFee); | |||
} | |||
//增补OBU费用 | |||
if (issueProduct.getRepairObuFee() != null) { | |||
AfterSaleFee afterSaleFee = new AfterSaleFee(); | |||
afterSaleFee.setProductAfterType(ProductAfterType.REPAIROBU); | |||
afterSaleFee.setAmount(issueProduct.getRepairObuFee()); | |||
afterSaleFeeList.add(afterSaleFee); | |||
} | |||
return afterSaleFeeList; | |||
} | |||
@@ -225,6 +225,16 @@ public class PromotionManagerImpl extends AbstractManagewManager implements Prom | |||
afterSaleFeeModel.setReleaseId(promotion.getReleaseId()); | |||
afterSaleFeeModelList.add(afterSaleFeeModel); | |||
} | |||
// 售后增补OBU费 | |||
Long repairObuFee = issueProduct.getRepairObuFee(); | |||
if (repairObuFee != null) { | |||
AfterSaleFeeModel afterSaleFeeModel = new AfterSaleFeeModel(); | |||
afterSaleFeeModel.setFeeType(ProductAfterType.REPAIROBU); | |||
afterSaleFeeModel.setFee(repairObuFee); | |||
payAfterMap.map(m -> m.get(ProductAfterType.REPAIROBU.name())).ifPresent(m -> copyProperties(m, afterSaleFeeModel)); | |||
afterSaleFeeModel.setReleaseId(promotion.getReleaseId()); | |||
afterSaleFeeModelList.add(afterSaleFeeModel); | |||
} | |||
//之所以判断下,再赋值,因为如果afterSaleFeeModelList是空集合,就返给前端null,而不是空集合对象 | |||
if (CollectionUtil.isNotEmpty(afterSaleFeeModelList)) { | |||
responseDTO.setAfterSaleFees(afterSaleFeeModelList); |
@@ -45,6 +45,7 @@ public enum DataType { | |||
ASSORDER_AUDIT("assOrderAudit", IasServiceType.ASS, AssServiceCmd.ORDERAUDIT), | |||
ASSORDER_CANCEL("assOrderCancel", IasServiceType.ASS, AssServiceCmd.ORDERCANCEL), | |||
ASSORDER_PAYINFO("assOrderPayInfo", IasServiceType.ASS, AssServiceCmd.PAYINFO), | |||
ASSORDER_SENDINFO("assOrderSendInfo", IasServiceType.ASS, AssServiceCmd.SENDINFO), | |||
; |
@@ -25,6 +25,8 @@ import cn.com.taiji.core.repo.jpa.basic.QtkCustomerInfoRepo; | |||
import cn.com.taiji.core.repo.jpa.basic.QtkServicehallRepo; | |||
import cn.com.taiji.core.repo.jpa.basic.QtkVehicleInfoRepo; | |||
import cn.com.taiji.core.repo.jpa.comm.CommonPayConfigRepo; | |||
import cn.com.taiji.core.repo.jpa.invw.InvwCardDetailsRepo; | |||
import cn.com.taiji.core.repo.jpa.invw.InvwObuDetailsRepo; | |||
import cn.com.taiji.core.repo.jpa.issue.IssueOrderPayRepo; | |||
import cn.com.taiji.core.repo.jpa.issue.IssueOrderRefundRepo; | |||
import cn.com.taiji.core.repo.jpa.user.AccountInfoRepo; | |||
@@ -72,6 +74,11 @@ public abstract class AbstractIasManager<T extends AbstractSignTypeRequest<?>> e | |||
@Autowired | |||
protected AssAgencyConfigRepo assAgencyConfigRepo; | |||
@Autowired | |||
protected InvwCardDetailsRepo invwCardDetailsRepo; | |||
@Autowired | |||
protected InvwObuDetailsRepo invwObuDetailsRepo; | |||
public AbstractIasManager(DataType dataType) { | |||
super(dataType); | |||
} |
@@ -0,0 +1,138 @@ | |||
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.dict.ass.AssOrderStep; | |||
import cn.com.taiji.core.entity.dict.invw.InvDeviceStatus; | |||
import cn.com.taiji.core.entity.dict.issue.OrderType; | |||
import cn.com.taiji.core.entity.dict.log.OperateType; | |||
import cn.com.taiji.core.entity.invw.InvwCardDetails; | |||
import cn.com.taiji.core.entity.invw.InvwObuDetails; | |||
import cn.com.taiji.core.entity.issue.IssueOrderPost; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.AssOrderSendRequest; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.AssOrderSendResponse; | |||
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; | |||
import cn.com.taiji.core.repo.jpa.issue.IssueOrderinfoPostRepo; | |||
import cn.com.taiji.ias.dict.DataType; | |||
import cn.com.taiji.ias.manager.ass.vehicleChange.VehicleChangeSendManagew; | |||
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.Map; | |||
import java.util.Objects; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/9/16 9:58 | |||
* @Filename:AssOrderSendManager | |||
* @description: | |||
*/ | |||
@Service | |||
public class AssOrderSendManager extends AbstractAssManager<AssOrderSendRequest>{ | |||
public AssOrderSendManager() { | |||
super(DataType.ASSORDER_SENDINFO); | |||
} | |||
private static final String CARD_DETAILS = "cardDetails"; | |||
private static final String OBU_DETAILS = "obuDetails"; | |||
@Autowired | |||
private IssueOrderinfoPostRepo issueOrderinfoPostRepo; | |||
@Autowired | |||
private VehicleChangeSendManagew vehicleChangeSendManagew; | |||
@Override | |||
protected String getDataId(AssOrderSendRequest req) { | |||
return ""; | |||
} | |||
@Override | |||
protected void formatValidateInternal(ErrorMsgBuilder builder, AssOrderSendRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
} | |||
@Override | |||
protected void businessValidateInternal(ErrorMsgBuilder builder, AssOrderSendRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
AssOrderinfo assOrderinfo = checkOrder(req.getOrderNo()); | |||
if (AssOrderStep.WAITING_RECEIVE != assOrderinfo.getOrderStep()) { | |||
throw newBusinessException("当前申请单处于'"+assOrderinfo.getOrderStep().getStep()+"'不是待收货状态"); | |||
} | |||
// 查询卡 临时代码 | |||
InvwCardDetails cardDetails = invwCardDetailsRepo.findByCardIdAndStatus(req.getCardId(), InvDeviceStatus.NEW); | |||
// InvwCardDetails cardDetails = invwCardDetailsRepo.findByCardId(card); | |||
if (cardDetails == null) { | |||
throw newBusinessException("当前ETC卡不在库存中"); | |||
} | |||
// 查询签 临时 | |||
InvwObuDetails obuDetails = invwObuDetailsRepo.findByObuIdAndStatus(req.getObuId(),InvDeviceStatus.NEW); | |||
// InvwObuDetails obuDetails = invwObuDetailsRepo.findByObuId(obuId); | |||
if (obuDetails == null) { | |||
throw newBusinessException("当前OBU不在库存中"); | |||
} | |||
// 校验卡签版本号一致 | |||
if (!Objects.equals(cardDetails.getVersion(), obuDetails.getVersion())) { | |||
throw newBusinessException("卡签版本号不一致,请核验卡签版本"); | |||
} | |||
dataStream.put(ORDER, assOrderinfo); | |||
dataStream.put(CARD_DETAILS, cardDetails); | |||
dataStream.put(OBU_DETAILS, obuDetails); | |||
} | |||
//自己更新自己的订单和业务表 | |||
@Override | |||
protected void persistInternal(AssOrderSendRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException { | |||
InvwCardDetails cardDetails = (InvwCardDetails) dataStream.get(CARD_DETAILS); | |||
InvwObuDetails obuDetails = (InvwObuDetails) dataStream.get(OBU_DETAILS); | |||
AssOrderinfo orderinfo = (AssOrderinfo)dataStream.get(ORDER); | |||
// 保存发货表并更新库存 | |||
savePost(req, cardDetails, obuDetails); | |||
switch (orderinfo.getOrderType()){ | |||
case VEHICLE_UPDATE: | |||
vehicleChangeSendManagew.send(orderinfo, req); | |||
break; | |||
default: | |||
throw newBusinessException("订单类型未定义"); | |||
} | |||
} | |||
private void savePost(AssOrderSendRequest req, InvwCardDetails cardDetails, InvwObuDetails obuDetails) { | |||
LocalDateTime now = LocalDateTime.now(); | |||
IssueOrderPost issueOrderPost = new IssueOrderPost(); | |||
issueOrderPost.setOrderType(OrderType.AFTERSALE); | |||
issueOrderPost.setOrderNo(req.getOrderNo()); | |||
issueOrderPost.setDeliveryTime(now); | |||
issueOrderPost.setConsignorId(req.getOpenId()); | |||
issueOrderPost.setConsignorTime(now); | |||
issueOrderPost.setTrackingNumber(req.getTrackingNumber()); | |||
issueOrderPost.setCourierCompany(req.getCourierCompany()); | |||
issueOrderPost.setConsignee(req.getConsignee()); | |||
issueOrderPost.setConsigneeTel(req.getConsigneeTel()); | |||
issueOrderPost.setRegion(req.getRegion()); | |||
issueOrderPost.setAddress(req.getAddress()); | |||
issueOrderPost.setPostCode(req.getPostCode()); | |||
issueOrderPost.setCardId(req.getCardId()); | |||
issueOrderPost.setObuId(req.getObuId()); | |||
issueOrderinfoPostRepo.persist(issueOrderPost); | |||
// 更新库存 | |||
cardDetails.setStatus(InvDeviceStatus.OUT); | |||
obuDetails.setStatus(InvDeviceStatus.OUT); | |||
invwCardDetailsRepo.merge(cardDetails); | |||
invwObuDetailsRepo.merge(obuDetails); | |||
} | |||
@Override | |||
protected AssOrderSendResponse getRes(AssOrderSendRequest req, ServiceLogEvent event, Map<String, Object> dataStream) throws ServiceHandleException, IOException { | |||
AssOrderinfo order = (AssOrderinfo) dataStream.get(ORDER); | |||
AssOrderSendResponse res = new AssOrderSendResponse(); | |||
switch (order.getOrderType()){ | |||
case VEHICLE_UPDATE: | |||
res.setType(OperateType.CHANGE_VEHICLE_SEND); | |||
break; | |||
} | |||
res.setId(order.getId()); | |||
return res; | |||
} | |||
} |
@@ -0,0 +1,48 @@ | |||
package cn.com.taiji.ias.manager.ass.vehicleChange; | |||
import cn.com.taiji.common.manager.net.http.ServiceHandleException; | |||
import cn.com.taiji.core.entity.ass.AssOrderinfo; | |||
import cn.com.taiji.core.entity.ass.AssVehicleInfoChange; | |||
import cn.com.taiji.core.entity.dict.ass.AssOrderStep; | |||
import cn.com.taiji.core.entity.dict.issue.ShippingStatus; | |||
import cn.com.taiji.core.model.comm.protocol.ias.ass.AssOrderSendRequest; | |||
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; | |||
import cn.com.taiji.core.repo.jpa.ass.AssOrderinfoRepo; | |||
import cn.com.taiji.core.repo.jpa.ass.AssVehicleInfoChangeRepo; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.time.LocalDateTime; | |||
/** | |||
* @Author:ChenChao | |||
* @Date:2025/9/16 11:32 | |||
* @Filename:VehicleChangeSendManagew | |||
* @description: | |||
*/ | |||
@Service | |||
public class VehicleChangeSendManagew { | |||
@Autowired | |||
private AssOrderinfoRepo orderinfoRepo; | |||
@Autowired | |||
private AssVehicleInfoChangeRepo vehicleInfoChangeRepo; | |||
public void send(AssOrderinfo orderinfo, AssOrderSendRequest req) throws ServiceHandleException { | |||
LocalDateTime now = LocalDateTime.now(); | |||
orderinfo.setOrderStep(AssOrderStep.WAITING_RECEIVE); | |||
orderinfo.setUpdateTime(now); | |||
orderinfoRepo.merge(orderinfo); | |||
AssVehicleInfoChange vehicleInfoChange = vehicleInfoChangeRepo.findByOrderNo(req.getOrderNo()); | |||
if (vehicleInfoChange == null) throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("未查询到车辆变更信息!"); | |||
vehicleInfoChange.setCardId(req.getCardId()); | |||
vehicleInfoChange.setObuId(req.getObuId()); | |||
vehicleInfoChange.setConsignee(req.getConsignee()); | |||
vehicleInfoChange.setConsigneeTel(req.getConsigneeTel()); | |||
vehicleInfoChange.setRegion(req.getRegion()); | |||
vehicleInfoChange.setAddress(req.getAddress()); | |||
vehicleInfoChange.setPostCode(req.getPostCode()); | |||
vehicleInfoChange.setTransportIdNum(req.getTrackingNumber()); | |||
vehicleInfoChange.setCourierCompany(req.getCourierCompany()); | |||
vehicleInfoChange.setUpdateTime(now); | |||
vehicleInfoChange.setShippingStatus(ShippingStatus.WAIT_RECEIVING); | |||
vehicleInfoChangeRepo.merge(vehicleInfoChange); | |||
} | |||
} |