提交 1adb0508 authored 作者: 姜武杰's avatar 姜武杰

Merge branch 'v32.1-test-problems-20241029' into test_jdk17

# Conflicts: # clx-performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java # clx-performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java # clx-performance-web/src/main/java/com/clx/performance/dao/impl/OrderGoodsDaoImpl.java
......@@ -286,8 +286,6 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
baseMapper.batchCancelOrderGoods(cancelOrderGoodsWeight);
}
@Override
public List<OrderGoods> listAfterCreatedByOrderNo(String orderNo) {
return baseMapper.selectList(lQrWrapper().eq(OrderGoods::getOrderNo, orderNo)
......
package com.clx.performance.job;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.service.LastTruckService;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.zjxl.ZjxlGpsService;
import com.clx.user.feign.UserClxFeign;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.job.JobLog;
import com.msl.common.result.Result;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@Slf4j
@Component
@AllArgsConstructor
......
......@@ -55,23 +55,35 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild
@Autowired
private SettlementMqService settlementMqService;
/**
* 更新子订单风险处理信息
* 此方法用于处理子订单的风险流程更新,根据不同的处理方式更新相关细节,并发送消息到消息队列
*
* @param param 包含子订单风险处理更新参数的对象
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void updateRiskProcess(OwnerSettlementOrderChildRiskProcessUpdateParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
// 获取子订单风险信息,如果不存在则抛出异常
SettlementOrderChildRisk settlementOrderChildRisk = settlementOrderChildRiskDao.getById(param.getId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
// 检查子订单风险状态,如果已处理则抛出异常
if (Objects.equals(settlementOrderChildRisk.getStatus(), SettlementOrderChildRiskEnum.Status.PROCESSED.getCode())) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_RISK_PROCESS_ERROR);
}
// 获取子订单详细信息,如果不存在则抛出异常
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao
.getByChildNo(settlementOrderChildRisk.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
// 获取司机详细信息,如果不存在则抛出异常
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
.getByChildNo(settlementOrderChildRisk.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 获取司机信息,可能为null
SettlementDriver settlementDriver = settlementDriverDao.findByChildNo(settlementOrderChildRisk.getChildNo()).orNull();
// 更新子订单风险状态和处理信息
settlementOrderChildRisk.setStatus(SettlementOrderChildRiskEnum.Status.PROCESSED.getCode());
settlementOrderChildRisk.setProcessMethod(param.getProcessMethod());
settlementOrderChildRisk.setProcessBy(loginUserInfo.getUserName());
......@@ -79,6 +91,7 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild
// 转普通单
if (Objects.equals(param.getProcessMethod(), SettlementOrderChildRiskEnum.ProcessMethod.CONVERT_ORDINARY.getCode())) {
// 更新子订单详细信息为普通发票类型
settlementOwnerDetail.setInvoiceType(SettlementOwnerEnum.InvoiceType.ORDINARY.getCode());
settlementOwnerDetail.setInvoicingCompanyId(null);
settlementOwnerDetail.setInvoicingCompanyShorterName(null);
......@@ -87,14 +100,17 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild
settlementOwnerDetail.setInvoiceTypeModifiedTime(LocalDateTime.now());
settlementOwnerDetailDao.updateConvertOrdinary(settlementOwnerDetail);
// 同步更新司机详细信息
settlementDriverDetail.setInvoiceType(settlementOwnerDetail.getInvoiceType());
settlementDriverDetail.setInvoicingCompanyId(settlementOwnerDetail.getInvoicingCompanyId());
settlementDriverDetail.setInvoicingCompanyShorterName(settlementOwnerDetail.getInvoicingCompanyShorterName());
settlementDriverDetail.setInvoicingCompanyGroupCode(settlementOwnerDetail.getInvoicingCompanyGroupCode());
settlementDriverDetailDao.updateConvertOrdinary(settlementDriverDetail);
// 更新子订单风险的发票类型
settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType());
// 如果司机信息存在,则同步更新司机信息
if (settlementDriver != null) {
settlementDriver.setInvoiceType(settlementDriverDetail.getInvoiceType());
settlementDriver.setInvoicingCompanyId(settlementDriverDetail.getInvoicingCompanyId());
......@@ -106,17 +122,22 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild
}
else {
// 状态回滚
// 如果司机信息存在,则回滚司机状态
if (settlementDriver != null){
settlementDriver.setStatus(SettlementDriverEnum.Status.DRIVER_UNCONFIRMED.getCode());
settlementDriverDao.updatePayStatus(settlementDriver);
}
// 回滚司机详细信息的支付接受状态
settlementDriverDetail.setPayAcceptStatus(SettlementDriverDetailEnum.PayAcceptStatus.INIT.getCode());
settlementDriverDetailDao.updatePayAcceptStatus(settlementDriverDetail);
}
// 更新子订单风险处理信息
settlementOrderChildRiskDao.updateProcess(settlementOrderChildRisk);
// 发送mq (风控处理)
// 通知风险处理完成,触发后续流程
settlementMqService.riskProcess(settlementOrderChildRisk.getId());
}
......
......@@ -12,7 +12,7 @@ public class SettlementDriverDetailSqlProvider {
public String listUnPay() {
return new SQL(){{
SELECT("a.* ");
FROM("settlement_owner_detail a ");
FROM("settlement_driver_detail a ");
LEFT_OUTER_JOIN("settlement_driver b on a.settlement_no = b.settlement_no ");
WHERE("b.create_time >= #{beginTime}");
WHERE("b.status = " + SettlementDriverEnum.Status.WAIT_SETTLEMENT.getCode());
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论