提交 999af438 authored 作者: liruixin's avatar liruixin

Merge branch 'bug_log_optimization_20240413' into dev

......@@ -3,18 +3,41 @@ package com.clx.performance.job;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.clx.performance.component.ThirdComponent;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dto.OrderChildSyncDTO;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.extranal.user.OwnerInfoService;
import com.clx.performance.feign.TransportFeignService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.OrderChildSyncTransportRecord;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.feign.transport.OrderChildPaySyncParam;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.service.settle.SettlementOwnerDetailService;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.msl.common.dto.HttpDTO;
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.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Slf4j
......@@ -26,12 +49,24 @@ public class OrderChildPaySyncTransportJob {
private final TransportFeignService transportFeignService;
private final SettlementMqHandlerService settlementMqHandlerService;
private final SettlementDriverDetailService settlementDriverDetailService;
private final SettlementOwnerDetailService settlementOwnerDetailService;
private final SettlementMqService settlementMqService;
private final OrderChildDao orderChildDao;
private final OrderGoodsDao orderGoodsDao;
/**
* 同步网络货运
*/
@XxlJob("orderChildPaySyncTransportJob")
public void orderChildPaySyncTransportJob() {
List<OrderChildSyncTransportRecord> recordList = orderChildSyncTransportRecordDao.selectListForJob();
List<OrderChildSyncTransportRecord> recordList = orderChildSyncTransportRecordDao.selectListForJob();
if (CollectionUtil.isEmpty(recordList)) {
return;
}
......@@ -52,4 +87,32 @@ public class OrderChildPaySyncTransportJob {
}
}
/**
* 结算信息job处理
* */
@XxlJob("settlementDetailInvoiceTypeSyncJob")
public void settlementDetailInvoiceTypeSyncJob() {
String jobParam = XxlJobHelper.getJobParam();
log.info("XxlJobHelper jobParam:{}", jobParam);
SettlementDetailInvoiceTypeSyncMqParam mqParam = new SettlementDetailInvoiceTypeSyncMqParam();
mqParam.setChildNo(jobParam);
settlementMqHandlerService.settlementDetailInvoiceTypeSync(mqParam);
}
@XxlJob("testJob")
public void test2() {
String jobParam = XxlJobHelper.getJobParam();
log.info("XxlJobHelper jobParam:{}", jobParam);
OrderChild orderChild = orderChildDao.getByChildNo(jobParam).get();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).get();
Integer settlementDriverDetailId = settlementDriverDetailService.saveSettlementDetail(orderChild);
Integer settlementOwnerDetailId = settlementOwnerDetailService.saveSettlementDetail(orderChild, orderGoods);
settlementMqService.settlementDetailAdd(settlementDriverDetailId, settlementOwnerDetailId);
}
}
......@@ -69,7 +69,10 @@ public class OrderChildDtsListener {
}else if(Objects.equals(DtsOperationTypeEnum.UPDATE.getCode(),dataTransportDTO.getOperationType().getCode())){
log.info("修改:{}",after);
if(OrderChildEnum.SYNC_STATUS_lIST.contains(after.getStatus()) &&
(!Objects.equals(before.getStatus(),after.getStatus()) || !Objects.equals(before.getLoadNet(),after.getLoadNet()))){
(!Objects.equals(before.getStatus(),after.getStatus()) ||
!Objects.equals(before.getLoadNet(),after.getLoadNet())) ||
!Objects.equals(before.getUnloadNet(),after.getUnloadNet())
){
orderChildChangeAfter(after);
}
if(OrderChildEnum.DTS_LISTEN_CANCEL_lIST.contains(after.getStatus())){
......
......@@ -109,6 +109,7 @@ public class OrderChildSyncTransportListener {
public void extracted(OrderChild orderChild, OrderChildSyncDTO bean, String remark,
SettlementOwnerDetail settlementOwnerDetail,
Integer invoiceType, SettlementDriverDetail settlementDriverDetail) {
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
if (null != bean && bean.getCode() == 0) {
log.info("当前OrderChildSyncTransportListener监听同步网络货运成功,运单号为{}", orderChild.getChildNo());
......
......@@ -741,7 +741,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
update.setFinishTime(now);
orderChildDao.updateEntityByKey(update);
orderCancelComponent.backFillTonnageForArtificial(orderChild.getOrderGoodsNo(), orderChild.getWeight());
orderCancelComponent.backFillTonnageForArtificial(orderChild.getOrderGoodsNo(), orderChild.getLoadNet());
goodsOrderTruckRecordComponent.releaseAllDriverCard(orderChild.getOrderGoodsNo(), orderChild.getTruckNo());
driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
......
......@@ -774,6 +774,7 @@ public class OrderChildServiceImpl implements OrderChildService {
private void updateReload(OrderChildLoadParam param, OrderChild orderChild, OrderGoods orderGoods) {
String childNo = param.getChildNo();
log.info("装车毛重:{}, 装车皮重:{}", param.getLoadRough(), param.getLoadTare());
BigDecimal loadNet = param.getLoadRough().subtract(param.getLoadTare());
if (loadNet.compareTo(new BigDecimal(99)) > 0) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_NET_ERROR);
......@@ -791,8 +792,8 @@ public class OrderChildServiceImpl implements OrderChildService {
imageList.add(image);
}
BigDecimal dif = loadNet.subtract(orderChild.getWeight());
BigDecimal dif = loadNet.subtract(orderChild.getLoadNet());
log.info("dif:{}, loadNet:{}", dif, loadNet);
orderChild.setLoadRough(param.getLoadRough());
orderChild.setLoadTare(param.getLoadTare());
orderChild.setLoadNet(loadNet);
......@@ -1346,6 +1347,8 @@ public class OrderChildServiceImpl implements OrderChildService {
}
@Override
public OrderChildVO getOrderChildInfo(String childNo) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
......@@ -1605,6 +1608,7 @@ public class OrderChildServiceImpl implements OrderChildService {
orderGoodsService.borrowWeight(orderGoods, childNo, orderGoods.getResidueTransportWeight(), dif,
dif.subtract(orderGoods.getResidueTransportWeight()), orderGoodsStatus);
} else {
log.info("货单吨数有剩余,归还吨数:{}", dif);
// 货单吨数够扣减,直接更新货单剩余吨数和已拉运吨数和状态
orderGoodsDao.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), dif, orderGoodsStatus);
}
......
......@@ -270,8 +270,8 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
//插入冻结流水
OwnerRunningWaterRecord runningWaterRecord = new OwnerRunningWaterRecord();
runningWaterRecord.setOwnerUserName(loginUserInfo.getUserName());
runningWaterRecord.setMobile(loginUserInfo.getUserMobile());
runningWaterRecord.setOwnerUserName(account.getOwnerUserName());
runningWaterRecord.setMobile(account.getMobile());
runningWaterRecord.setCreateBy(loginUserInfo.getUserName());
runningWaterRecord.setRelationId(entity.getCaseOutNo());
//变动金额
......@@ -327,8 +327,8 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
ownerCaseOutDao.saveEntity(entity);
//插入冻结流水
OwnerRunningWaterRecord runningWaterRecord = new OwnerRunningWaterRecord();
runningWaterRecord.setOwnerUserName(loginUserInfo.getUserName());
runningWaterRecord.setMobile(loginUserInfo.getUserMobile());
runningWaterRecord.setOwnerUserName(account.getOwnerUserName());
runningWaterRecord.setMobile(account.getMobile());
runningWaterRecord.setCreateBy(loginUserInfo.getUserName());
runningWaterRecord.setRelationId(entity.getCaseOutNo());
......@@ -401,7 +401,7 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
//需要插入充值流水
OwnerRunningWaterRecord runningWaterRecord = new OwnerRunningWaterRecord();
runningWaterRecord.setOwnerUserName(account.getOwnerUserName());
runningWaterRecord.setMobile(loginUserInfo.getUserMobile());
runningWaterRecord.setMobile(account.getMobile());
runningWaterRecord.setCreateBy(loginUserInfo.getUserName());
runningWaterRecord.setRelationId(ownerTopUp.getTopUpNo());
......@@ -480,8 +480,8 @@ public class OwnerAccountServiceImpl implements OwnerAccountService {
account = ownerAccountDao.getAccountByOwnerUserNoAndAccountType(ownerCaseOut.getOwnerUserNo(), ownerCaseOut.getAccountType());
//插入提现成功流水
OwnerRunningWaterRecord runningWaterRecord = new OwnerRunningWaterRecord();
runningWaterRecord.setOwnerUserName(loginUserInfo.getUserName());
runningWaterRecord.setMobile(loginUserInfo.getUserMobile());
runningWaterRecord.setOwnerUserName(account.getOwnerUserName());
runningWaterRecord.setMobile(account.getMobile());
runningWaterRecord.setCreateBy(loginUserInfo.getUserName());
runningWaterRecord.setRelationId(ownerCaseOut.getCaseOutNo());
......
package com.clx.performance.service.impl.settle;
import cn.hutool.json.JSONUtil;
import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.performance.config.MslPaymentConfig;
import com.clx.performance.constant.RedissonConstants;
......@@ -13,10 +14,7 @@ import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.enums.PayRemarkEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementLogEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementPlatformEnum;
import com.clx.performance.enums.settle.*;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.extranal.user.OwnerInfoService;
......@@ -109,15 +107,21 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
private OrderService orderService;
@Override
@Transactional(rollbackFor = Exception.class)
public void settlementDetailInvoiceTypeSync(SettlementDetailInvoiceTypeSyncMqParam mq) {
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
log.info("当前车主计费信息{},司机计费信息:{}", JSONUtil.parse(settlementOwnerDetail), JSONUtil.parse(settlementDriverDetail));
if (settlementOwnerDetail.getInvoiceFreight() == null) {
log.info("当前车主计费信息开票金额为空,需要重新处理计算开票金额");
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).get();
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
SettlementOwnerDetail update = new SettlementOwnerDetail();
update.setId(settlementOwnerDetail.getId());
update.setInvoiceFreight(settlementOwnerDetail.getInvoiceFreight());
settlementOwnerDetailDao.updateEntityByKey(update);
}
String settlementNo = null ;
SettlementOwner settlementOwner = null;
......@@ -482,4 +486,13 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
return uniqueOrderNumService.getUniqueOrderNum(com.msl.common.utils.LocalDateTimeUtils.convertLocalDateTimeToString(LocalDateTime.now(), com.msl.common.utils.LocalDateTimeUtils.DATE_DAY));
}
private BigDecimal invoiceFreightCalc(Integer settlementWay, SettlementOwnerDetail settlementOwnerDetail) {
if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { //订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
.subtract(settlementOwnerDetail.getLossFreight());
} else { //订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice());
}
}
}
......@@ -50,14 +50,14 @@ public abstract class GoodsOrderStrategy {
throw new ServiceSystemException(ResultEnum.DATA_ERROR, "订单已暂停,无法进行提量");
}
String transportBeginTime = orderInfo.getTransportBeginTime();
if (!"test".equals(environment.getActiveProfiles()[0])) {
/* if (!"test".equals(environment.getActiveProfiles()[0])) {
for (OrderGoodsChildParams param : orderGoodsParams.getOrderGoodsChildParams()) {
String pendingOrderTime = param.getPendingOrderTime();
if (DateUtils.parseDateTime(pendingOrderTime).get().isBefore(DateUtils.parseDateTime(transportBeginTime).get())) {
throw new ServiceSystemException(ResultEnum.DATA_ERROR, "挂单时间不能早于拉运开始时间");
}
}
}
}*/
//多个定向单不允许车辆重复
List<OrderGoodsChildParams> orderGoodsChildParams = orderGoodsParams.getOrderGoodsChildParams();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论