提交 93daa29d authored 作者: aiqingguo's avatar aiqingguo

Merge branch 'v6.4_transportation_20231110' into test

......@@ -16,9 +16,9 @@ import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsTruckBindService;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.user.enums.driver.DriverInfoEnum;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result;
......@@ -27,7 +27,6 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -62,6 +61,8 @@ public class OrderCancelComponent implements InitializingBean {
private final OrderChildLogService orderChildLogService;
private final OrderChildPostService orderChildPostService;
public List<String> ownerProcess(OrderCancelParam param) {
String orderNo = param.getOrderNo();
List<OrderGoods> orderGoodsList = null;
......@@ -183,7 +184,8 @@ public class OrderCancelComponent implements InitializingBean {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用取消订单失败");
}
for (String childNo : childNoList) {
integralMqService.orderChildFinish(childNo);
// 订单取消
orderChildPostService.orderCancel(childNo);
}
return childNoList;
......
......@@ -14,6 +14,7 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.breakcontract.BreakContractDriverRecordService;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.user.enums.driver.DriverInfoEnum;
import com.msl.common.base.Optional;
import com.msl.common.utils.DateUtils;
......@@ -60,6 +61,8 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
private final OrderChildLogService orderChildLogService;
private final OrderChildPostService orderChildPostService;
//根据货单最晚接单时间处理
public void expireProduceByLastOrderTime(LocalDateTime localDateTime, String orderGoodsNo) {
......@@ -219,6 +222,8 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
orderChildLogService.saveDriverOrderChildLog(orderChild.getChildNo(), OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode(),
OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg(), 0L, "系统");
// 到达货源地超时取消
orderChildPostService.arriveSendAddressTimeoutCancel(orderChild);
}
log.info("取消运单ID集合:{}", childNoList);
if (CollectionUtil.isNotEmpty(childNoList)) {
......
......@@ -25,6 +25,8 @@ public interface BreakContractDriverRecordService {
void saveDriverRecordOfOrderChildCancel(OrderChild orderChild, Long createBy, String createName);
void saveDriverRecordOfArriveSendAddressTimeout(OrderChild orderChild, Long createBy, String createName);
void saveDriverRecordOfArriveSendAddress(OrderChild orderChild, Long createBy, String createName);
void saveDriverRecordOfArriveReceiveAddress(OrderChild orderChild, Long createBy, String createName);
......
package com.clx.performance.service.child;
import com.clx.performance.model.OrderChild;
public interface OrderChildPostService {
void orderChildFinish(String childNo);
void arriveSendAddressTimeoutCancel(OrderChild orderChild);
void orderCancel(String childNo);
void orderGoodsCancel(String childNo);
void orderChildCancelByArtificial(String childNo);
}
......@@ -26,6 +26,7 @@ import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderGoodsTruckBindService;
import com.clx.performance.service.OwnerAccountService;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.user.enums.driver.DriverInfoEnum;
import com.msl.common.base.PageParam;
......@@ -77,6 +78,8 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private final OrderChildLogService orderChildLogService;
private final OrderChildPostService orderChildPostService;
@Override
@Transactional(rollbackFor = Exception.class)
......@@ -703,6 +706,9 @@ public class OrderCancelServiceImpl implements OrderCancelService {
goodsOrderTruckRecordComponent.releaseDriverCard(orderChild.getOrderGoodsNo(), orderChild.getTruckNo());
driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
// 运单取消
orderChildPostService.orderChildCancelByArtificial(orderChildNo);
orderChildLogService.saveOrderChildLog(orderChild.getChildNo(),
OrderChildEnum.Status.ARTIFICIAL_CANCEL.getCode(), OrderChildEnum.Status.ARTIFICIAL_CANCEL.getName(),
OrderChildLogEnum.CreateType.ARTIFICIAL.getCode(), 0L, OrderChildLogEnum.CreateType.ARTIFICIAL.getMsg()
......
......@@ -31,6 +31,7 @@ import com.clx.performance.param.pc.OrderGoodsCancelParam;
import com.clx.performance.param.pc.UpdateEditOrderGoodsParam;
import com.clx.performance.param.pc.UpdateOrderGoodsPriceParam;
import com.clx.performance.service.*;
import com.clx.performance.service.child.OrderChildPostService;
import com.clx.performance.struct.OrderGoodsStruct;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO;
......@@ -51,7 +52,6 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -104,6 +104,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
private final OrderChildLogService orderChildLogService;
private final OrderChildPostService orderChildPostService;
@Override
public OrderGoodsVO getOrderGoodsInfoByOrderGoodsNoForPC(String orderGoodsNo) {
OrderGoodsVO orderGoodsVO = orderGoodsDao.getOrderGoodsInfoByOrderGoodsNoForPC(orderGoodsNo).map(orderGoodsStruct::convert).get();
......@@ -629,7 +631,8 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
orderFeign.orderCancelReason(orderCancelReasonParam);
for (String childNo : childNoList) {
integralMqService.orderChildFinish(childNo);
// 货单取消
orderChildPostService.orderGoodsCancel(childNo);
}
orderGoodsLogService.saveLog(orderGoodsNo, loginUserInfo.getUserNo(), loginUserInfo.getUserName(), OrderGoodsLogsEnum.Type.CANCEL.getName(), "");
......
......@@ -165,6 +165,43 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive
breakContractMqService.driverRecordAdd(record.getId());
}
@Override
public void saveDriverRecordOfArriveSendAddressTimeout(OrderChild orderChild, Long createBy, String createName) {
BreakContractDriverRecord record = new BreakContractDriverRecord();
// 1小时内不违约
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
if (!orderChild.getPayTime().plusHours(1).isBefore(orderGoods.getLastArriveReceiveTime())){return;}
BreakContractDriverRule rule = breakContractDriverRuleDao.getEntityByKey(1).orNull();
if (rule == null) {return;}
BreakContractDriverRuleVO breakContractDriverRuleVO = JSON.parseObject(rule.getRuleJson(), BreakContractDriverRuleVO.class);
// 费用计算
BigDecimal figure = orderChildArriveSendAddressTimeoutFigureCalc(orderChild, orderGoods, breakContractDriverRuleVO);
record.setTriggerType(BreakContractRecordEnum.TriggerType.SYSTEM.getCode());
record.setBreakContractPartyType(BreakContractRecordEnum.BreakContractPartyType.DRIVER.getCode());
record.setBreakNo(breakNoGenerate());
record.setFigure(figure);
record.setRemark("取消运单");
record.setChildNo(orderChild.getChildNo());
record.setTruckNo(orderChild.getTruckNo());
record.setTruckOwnUserNo(orderChild.getTruckOwnUserNo());
record.setTruckOwnName(orderChild.getTruckOwnName());
record.setDriverUserNo(orderChild.getDriverUserNo());
record.setDriverName(orderChild.getDriverName());
record.setCreateBy(0L);
record.setCreateName("系统");
breakContractDriverRecordDao.saveEntity(record);
// 发送mq (违约记录新增)
breakContractMqService.driverRecordAdd(record.getId());
}
@Override
public void saveDriverRecordOfArriveSendAddress(OrderChild orderChild, Long createBy, String createName) {
......@@ -267,6 +304,18 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive
}
}
/**
* 费用计算 (运单取消)
*/
private BigDecimal orderChildArriveSendAddressTimeoutFigureCalc(OrderChild orderChild, OrderGoods orderGoods, BreakContractDriverRuleVO rule){
long time = com.clx.performance.utils.LocalDateTimeUtils.betweenSecond(orderChild.getPayTime(), orderGoods.getLastArriveSendTime());
long baseTime = 3600;
time = time-baseTime;
BigDecimal money = BigDecimal.valueOf(time).divide(BigDecimal.valueOf(3600), 2, RoundingMode.HALF_UP).multiply(rule.getSendAddressRule().getFigurePerHour()).setScale(2, RoundingMode.HALF_UP);
return money.movePointRight(2);
}
/**
* 费用计算 (到达货源地超时)
*/
......
package com.clx.performance.service.impl.child;
import com.clx.performance.enums.UserTypeEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.OrderChildMqService;
import com.clx.performance.service.breakcontract.BreakContractDriverRecordService;
import com.clx.performance.service.child.OrderChildPostService;
import org.springframework.beans.factory.annotation.Autowired;
public class OrderChildPostServiceImpl implements OrderChildPostService {
@Autowired
private IntegralMqService integralMqService;
@Autowired
private OrderChildMqService orderChildMqService;
@Autowired
private BreakContractDriverRecordService breakContractDriverRecordService;
/**
* 运单结束
*/
@Override
public void orderChildFinish(String childNo) {
// 运单结束 统计积分
integralMqService.orderChildFinish(childNo);
}
/**
* 到达货源地超时取消
*/
@Override
public void arriveSendAddressTimeoutCancel(OrderChild orderChild){
// 发送mq (运单取消)
orderChildMqService.orderChildCancel(orderChild.getChildNo(), orderChild.getStatus(), UserTypeEnum.DRIVER.getCode(), 0L, "系统");
// 保存违约记录
breakContractDriverRecordService.saveDriverRecordOfArriveSendAddressTimeout(orderChild, 0L, "系统");
}
@Override
public void orderCancel(String childNo) {
// 运单结束 统计积分
integralMqService.orderChildFinish(childNo);
}
@Override
public void orderGoodsCancel(String childNo) {
// 运单结束 统计积分
integralMqService.orderChildFinish(childNo);
}
@Override
public void orderChildCancelByArtificial(String childNo) {
// 运单结束 统计积分
integralMqService.orderChildFinish(childNo);
}
}
......@@ -271,7 +271,7 @@ public class OrderGoodsSqlProvider {
" date_format(a.modified_time, '%Y-%m-%d %H:%i:%s') as modified_time," +
"a.extract_way,a.need_truck_num,a.senior_logistics_manager_id,a.senior_logistics_manager_name,a.pending_order_freight," +
"a.user_no,a.user_name,a.stop_flag,a.batch_number,a.last_arrive_receive_time,a.last_load_time,a.last_order_time,a.vehicle_usage,ab.truck_no as truckNo"
+ " from order_goods a left join order_goods_truck_bind ab on ab.order_goods_no = a.order_goods_no where ab.truck_no in (");
+ " from order_goods a right join order_goods_truck_bind ab on ab.order_goods_no = a.order_goods_no where ab.truck_no in (");
if (!param.isEmpty()) {
for (int i = 0; i < param.size(); i++) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论