提交 1a199456 authored 作者: huyufan's avatar huyufan

承运同步网络货运异步

上级 b15abb23
package com.clx.performance.param.feign.transport; package com.clx.performance.param.feign.transport;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.*;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@Getter @Getter
@Setter @Setter
@ToString @Builder
@NoArgsConstructor
public class ThirdOrderChildRiskStatusParam { public class ThirdOrderChildRiskStatusParam {
@ApiModelProperty(value = "运单编号") @ApiModelProperty(value = "运单编号")
......
...@@ -113,7 +113,7 @@ public class TempController { ...@@ -113,7 +113,7 @@ public class TempController {
@ApiOperation(value = "获取风控状态 (临时接口)", notes = "<br>By:艾庆国") @ApiOperation(value = "获取风控状态 (临时接口)", notes = "<br>By:艾庆国")
@RequestMapping(value = "/getRiskStatus", method = RequestMethod.POST) @RequestMapping(value = "/getRiskStatus", method = RequestMethod.POST)
public Result<Void> getRiskStatus(String childNo) { public Result<Void> getRiskStatus(String childNo) {
ThirdOrderChildRiskStatusParam param = new ThirdOrderChildRiskStatusParam(); ThirdOrderChildRiskStatusParam param = ThirdOrderChildRiskStatusParam.builder().build();
param.setChildNo(childNo); param.setChildNo(childNo);
HttpDTO httpDTO = transportFeignService.getRiskStatus(param); HttpDTO httpDTO = transportFeignService.getRiskStatus(param);
String decrypt = ThirdComponent.decrypt(httpDTO.getData()); String decrypt = ThirdComponent.decrypt(httpDTO.getData());
......
...@@ -4,10 +4,14 @@ import com.msl.common.dao.BaseDao; ...@@ -4,10 +4,14 @@ import com.msl.common.dao.BaseDao;
import com.clx.performance.mapper.OrderChildSyncTransportInvoiceRecordMapper; import com.clx.performance.mapper.OrderChildSyncTransportInvoiceRecordMapper;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord; import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
import java.util.List;
/** /**
* @author kavin * @author kavin
* Date 2024-01-03 * Date 2024-01-03
* Time 10:17 * Time 10:17
*/ */
public interface OrderChildSyncTransportInvoiceRecordDao extends BaseDao<OrderChildSyncTransportInvoiceRecordMapper, OrderChildSyncTransportInvoiceRecord, Integer> { public interface OrderChildSyncTransportInvoiceRecordDao extends BaseDao<OrderChildSyncTransportInvoiceRecordMapper, OrderChildSyncTransportInvoiceRecord, Integer> {
List<OrderChildSyncTransportInvoiceRecord> selectListForJob();
} }
package com.clx.performance.dao.impl; package com.clx.performance.dao.impl;
import com.clx.performance.enums.TransportSyncTypeEnum;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao; import com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao;
import com.clx.performance.mapper.OrderChildSyncTransportInvoiceRecordMapper; import com.clx.performance.mapper.OrderChildSyncTransportInvoiceRecordMapper;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord; import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
/** /**
* @author kavin * @author kavin
* Date 2024-01-03 * Date 2024-01-03
...@@ -13,4 +16,9 @@ import org.springframework.stereotype.Repository; ...@@ -13,4 +16,9 @@ import org.springframework.stereotype.Repository;
*/ */
@Repository @Repository
public class OrderChildSyncTransportInvoiceRecordDaoImpl extends BaseDaoImpl<OrderChildSyncTransportInvoiceRecordMapper, OrderChildSyncTransportInvoiceRecord, Integer> implements OrderChildSyncTransportInvoiceRecordDao { public class OrderChildSyncTransportInvoiceRecordDaoImpl extends BaseDaoImpl<OrderChildSyncTransportInvoiceRecordMapper, OrderChildSyncTransportInvoiceRecord, Integer> implements OrderChildSyncTransportInvoiceRecordDao {
@Override
public List<OrderChildSyncTransportInvoiceRecord> selectListForJob() {
return baseMapper.selectList(lQrWrapper().eq(OrderChildSyncTransportInvoiceRecord::getType, TransportSyncTypeEnum.Type.EXCEPTION.getCode()));
}
} }
package com.clx.performance.job;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;
import com.clx.performance.component.ThirdComponent;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao;
import com.clx.performance.enums.TransportSyncTypeEnum;
import com.clx.performance.feign.TransportFeignService;
import com.clx.performance.listener.OrderChildSyncTransportListener;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
import com.clx.performance.param.feign.transport.ThirdOrderChildRiskStatusParam;
import com.msl.common.result.Result;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.LinkedList;
import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
public class OrderChildSyncTransportInvoiceExceptionJob {
private final OrderChildSyncTransportInvoiceRecordDao orderChildSyncTransportInvoiceRecordDao;
private final OrderChildSyncTransportListener orderChildPaySync;
private final OrderChildDao orderChildDao;
private final TransportFeignService transportFeignService;
/**
* 同步网络货运
*/
@XxlJob("orderChildSyncTransportInvoiceExceptionJob")
@Transactional(rollbackFor = Exception.class)
public void orderChildSyncTransportInvoiceExceptionJob() {
//只查询同步异常的网络货运任务
List<OrderChildSyncTransportInvoiceRecord> recordList = orderChildSyncTransportInvoiceRecordDao.selectListForJob();
if (CollectionUtil.isEmpty(recordList)) {
return;
}
List<Integer> ids = new LinkedList<>();
for (OrderChildSyncTransportInvoiceRecord record : recordList) {
String data = transportFeignService.getRiskStatus(ThirdOrderChildRiskStatusParam.builder().childNo(record.getChildNo()).build()).getData();
String decrypt = ThirdComponent.decrypt(data);
Result bean = JSONUtil.toBean(decrypt, Result.class);
if (bean.succeed()) {
JSON json = JSONUtil.parse(bean.getData());
Object status = json.getByPath("status");
if (ObjectUtil.equal(status, 1)) {
OrderChild orderChild = orderChildDao.getByChildNo(record.getChildNo()).get();
ids.add(record.getId());
orderChildPaySync.transportOrderChildProcess(orderChild);
} else {
Object riskReason = json.getByPath("riskReason");
OrderChildSyncTransportInvoiceRecord entity = new OrderChildSyncTransportInvoiceRecord();
entity.setChildNo(json.getByPath("childNo").toString());
entity.setType(TransportSyncTypeEnum.Type.NO_PASS.getCode());
entity.setRemark(riskReason == null ? "" : riskReason.toString());
orderChildSyncTransportInvoiceRecordDao.saveEntity(entity);
}
}
}
orderChildSyncTransportInvoiceRecordDao.deleteByKeys(ids);
}
}
...@@ -29,6 +29,7 @@ import lombok.AllArgsConstructor; ...@@ -29,6 +29,7 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
...@@ -72,6 +73,7 @@ public class OrderChildSyncTransportListener { ...@@ -72,6 +73,7 @@ public class OrderChildSyncTransportListener {
transportOrderChildProcess(orderChild); transportOrderChildProcess(orderChild);
} catch (Exception e) { } catch (Exception e) {
log.info("当前OrderChildSyncTransportListener监听同步网络货运失败,运单号{}, 错误信息{}", orderChild.getChildNo(), e.getMessage()); log.info("当前OrderChildSyncTransportListener监听同步网络货运失败,运单号{}, 错误信息{}", orderChild.getChildNo(), e.getMessage());
OrderChildSyncTransportInvoiceRecord entity = new OrderChildSyncTransportInvoiceRecord(); OrderChildSyncTransportInvoiceRecord entity = new OrderChildSyncTransportInvoiceRecord();
entity.setChildNo(orderChild.getChildNo()); entity.setChildNo(orderChild.getChildNo());
entity.setType(TransportSyncTypeEnum.Type.EXCEPTION.getCode()); entity.setType(TransportSyncTypeEnum.Type.EXCEPTION.getCode());
...@@ -91,9 +93,15 @@ public class OrderChildSyncTransportListener { ...@@ -91,9 +93,15 @@ public class OrderChildSyncTransportListener {
HttpDTO httpDTOResult = transportFeignService.orderChildSync(param); HttpDTO httpDTOResult = transportFeignService.orderChildSync(param);
String decrypt = ThirdComponent.decrypt(httpDTOResult.getData()); String decrypt = ThirdComponent.decrypt(httpDTOResult.getData());
OrderChildSyncDTO bean = JSONUtil.toBean(decrypt, OrderChildSyncDTO.class); OrderChildSyncDTO bean = JSONUtil.toBean(decrypt, OrderChildSyncDTO.class);
if (bean.getCode() == 0) {
extracted(orderChild, bean.getData().getStatus(), bean.getCode(), JSONUtil.parse(bean).toString(), settlementOwnerDetail, invoiceType, settlementDriverDetail);
}
private void extracted(OrderChild orderChild, Integer status, Integer code, String remark,
SettlementOwnerDetail settlementOwnerDetail,
Integer invoiceType, SettlementDriverDetail settlementDriverDetail) {
if (code == 0) {
log.info("当前OrderChildSyncTransportListener监听同步网络货运成功,运单号为{}", orderChild.getChildNo()); log.info("当前OrderChildSyncTransportListener监听同步网络货运成功,运单号为{}", orderChild.getChildNo());
Integer status = bean.getData().getStatus();
if (status == 1) { if (status == 1) {
//通过风控 //通过风控
List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo()); List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo());
...@@ -148,7 +156,6 @@ public class OrderChildSyncTransportListener { ...@@ -148,7 +156,6 @@ public class OrderChildSyncTransportListener {
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode()); settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode());
} }
} else { } else {
String remark = JSONUtil.parse(bean).toString();
log.info("当前OrderChildSyncTransportListener监听同步网络货运失败,运单号{}, 错误信息{}", orderChild.getChildNo(), remark); log.info("当前OrderChildSyncTransportListener监听同步网络货运失败,运单号{}, 错误信息{}", orderChild.getChildNo(), remark);
OrderChildSyncTransportInvoiceRecord entity = new OrderChildSyncTransportInvoiceRecord(); OrderChildSyncTransportInvoiceRecord entity = new OrderChildSyncTransportInvoiceRecord();
entity.setChildNo(orderChild.getChildNo()); entity.setChildNo(orderChild.getChildNo());
...@@ -226,17 +233,17 @@ public class OrderChildSyncTransportListener { ...@@ -226,17 +233,17 @@ public class OrderChildSyncTransportListener {
ownerRunningWaterRecordDao.saveEntity(runningWaterRecord); ownerRunningWaterRecordDao.saveEntity(runningWaterRecord);
} }
private BigDecimal getPrepayFreightPay(Integer settlementWay, SettlementOwnerDetail settlementOwnerDetail, BigDecimal accountFrozenPrefreght) { private BigDecimal getPrepayFreightPay(Integer settlementWay, SettlementOwnerDetail settlementOwnerDetail, BigDecimal accountFrozenFreight) {
//订单结算方式为“装车净重”时 //订单结算方式为“装车净重”时
if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) {
BigDecimal subtract = settlementOwnerDetail.getFreight().subtract(settlementOwnerDetail.getLossFreight()); BigDecimal subtract = settlementOwnerDetail.getFreight().subtract(settlementOwnerDetail.getLossFreight());
if (accountFrozenPrefreght.compareTo(subtract) >= 0) { if (accountFrozenFreight.compareTo(subtract) >= 0) {
return subtract; return subtract;
} else { } else {
return BigDecimal.ZERO; return BigDecimal.ZERO;
} }
} else { } else {
if (accountFrozenPrefreght.compareTo(settlementOwnerDetail.getFreight()) >= 0) { if (accountFrozenFreight.compareTo(settlementOwnerDetail.getFreight()) >= 0) {
return settlementOwnerDetail.getFreight(); return settlementOwnerDetail.getFreight();
} else { } else {
return BigDecimal.ZERO; return BigDecimal.ZERO;
......
...@@ -149,12 +149,12 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -149,12 +149,12 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
if (!settlementDriverDetail.getInvoiceType().equals(SettlementOwnerEnum.InvoiceType.ONLINE.getCode())) { if (!settlementDriverDetail.getInvoiceType().equals(SettlementOwnerEnum.InvoiceType.ONLINE.getCode())) {
paySettlementDriver(settlementDriverDetail); paySettlementDriver(settlementDriverDetail);
} else { } else {
// if (settlementDriverDetail.getPrepayFreightFlag().equals(SettlementDriverEnum.PrepayFreightFlag.PAYED.getCode()) if (settlementDriverDetail.getPrepayFreightFlag().equals(SettlementDriverEnum.PrepayFreightFlag.PAYED.getCode())
// && settlementDriverDetail.getPrepayFreight().compareTo(BigDecimal.ZERO) > 0) { && settlementDriverDetail.getPrepayFreight().compareTo(BigDecimal.ZERO) > 0) {
settlementDriverDetail.setSettlementNo(settlementNo); settlementDriverDetail.setSettlementNo(settlementNo);
//插入同步网络货运待支付记录 //插入同步网络货运待支付记录
childSyncTransportRecordService.addOrderChildSyncTransportRecord(settlementDriverDetail); childSyncTransportRecordService.addOrderChildSyncTransportRecord(settlementDriverDetail);
// } }
} }
// 更新结算单 // 更新结算单
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论