提交 f85afbc2 authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/test' into test

......@@ -84,7 +84,7 @@ public enum PerformanceResultEnum implements ResultEnum {
SETTLEMENT_NO_FOUND(1401, "结算单不存在"),
MONEY_NO_SAME(1501, "货主提现金额和平台支付金额不一致"),
ORDER_CHILD_WEIGHT_NOT_EQ(1601, "磅单吨数和运单拉运吨数不一致")
ORDER_GOODS_WEIGHT_NOT_HAVE(1601, "货单可拉运吨数不足")
;
private final int code;
......
......@@ -13,12 +13,14 @@ import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsTruckBindService;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.clx.user.enums.driver.DriverInfoEnum;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
......@@ -54,11 +56,15 @@ public class OrderCancelComponent implements InitializingBean {
public static Map<Integer, String> statusCodeMap = new HashMap<>();
private final IntegralMqService integralMqService;
public void ownerProcess(OrderCancelParam param) {
String orderNo = param.getOrderNo();
List<OrderGoods> orderGoodsList = null;
Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode();
LocalDateTime now = LocalDateTime.now();
String now = DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss").get();
List<String> childNoList = new LinkedList<>();
switch (param.getCancelType()) {
case 1: //单纯取消订单
log.info("1:货主单纯取消订单");
......@@ -110,20 +116,19 @@ public class OrderCancelComponent implements InitializingBean {
List<OrderChild> orderChildren = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
log.info("执行货主取消未拉运+未到达货源地吨数,当前运单个数" + orderChildren.size());
List<Integer> ids = new LinkedList<>();
for (OrderChild orderChild : orderChildren) {
log.info("取消的运单:{}", JSONUtil.parse(orderChild));
//释放车辆
driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
ids.add(orderChild.getId());
childNoList.add(orderChild.getChildNo());
}
Map<String, List<OrderChild>> orderChildMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(ids)) {
log.info("ids:{}", ids);
if (CollectionUtil.isNotEmpty(childNoList)) {
log.info("childNoList:{}", childNoList);
orderChildDao.batchUpdateOrderChildStatus(
OrderChildEnum.Status.OWNER_CANCEL.getCode(), "货主取消",
now, now,ids);
now, now,childNoList);
orderChildMap = orderChildren.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
......@@ -169,7 +174,9 @@ public class OrderCancelComponent implements InitializingBean {
if (!orderFeign.updateOrderStatusByOrderNo(orderNo, orderStatusCode).succeed()) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "货主取消订单失败,原因:远程调用取消订单失败");
}
for (String childNo : childNoList) {
integralMqService.orderChildFinish(childNo);
}
}
......@@ -269,6 +276,7 @@ public class OrderCancelComponent implements InitializingBean {
}
@Override
public void afterPropertiesSet() throws Exception {
statusCodeMap.put(OrderEnum.Status.QUOTATION_CONFIRMED.getCode(), OrderEnum.Status.QUOTATION_CONFIRMED.getName());
......
......@@ -15,13 +15,16 @@ import com.clx.performance.enums.TruckDemandEnum;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.breakcontract.BreakContractDriverRecordService;
import com.clx.user.enums.driver.DriverInfoEnum;
import com.msl.common.base.Optional;
import com.msl.common.utils.DateUtils;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Component;
......@@ -56,6 +59,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
private final BreakContractDriverRecordService breakContractDriverRecordService;
//根据货单最晚接单时间处理
public void expireProduceByLastOrderTime(LocalDateTime localDateTime, String orderGoodsNo) {
redisTemplate.opsForZSet().add(RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ORDER_TIME, orderGoodsNo, localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli());
......@@ -168,7 +172,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
public void consumingLastArriveSendTime() {
log.info("货单-最晚到达货源地时间-定时器启动");
long nowTimeMillis = System.currentTimeMillis();
LocalDateTime now = LocalDateTime.now();
String now = DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss").get();
Set<ZSetOperations.TypedTuple<String>> orderGoodsIds = redisTemplate.opsForZSet().rangeByScoreWithScores(
RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ARRIVE_SEND_TIME,
0, nowTimeMillis //延时任务score最小值
......@@ -201,20 +205,20 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
BigDecimal childSum = BigDecimal.ZERO;
List<Integer> ids = new LinkedList<>();
List<String> childNoList = new LinkedList<>();
for (OrderChild orderChild : orderChildrenList) {
childSum = childSum.add(orderChild.getWeight());
ids.add(orderChild.getId());
childNoList.add(orderChild.getChildNo());
//释放车辆
driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
orderChild.setCancelTime(now);
orderChild.setFinishTime(now);
orderChild.setCancelTime(DateUtils.parseDateTime(now).get());
orderChild.setFinishTime(DateUtils.parseDateTime(now).get());
breakContractDriverRecordService.saveDriverRecordOfOrderChildCancel(orderChild, 0L, "系统");
}
log.info("取消运单ID集合:{}", ids);
if (CollectionUtil.isNotEmpty(ids)) {
orderChildDao.batchUpdateOrderChildStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode(), "系统取消", now, now, ids);
log.info("取消运单ID集合:{}", childNoList);
if (CollectionUtil.isNotEmpty(childNoList)) {
orderChildDao.batchUpdateOrderChildStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode(), "系统取消", now, now, childNoList);
}
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
......@@ -246,6 +250,8 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(childSum, childSum, orderGoods.getId());
}
redisTemplate.opsForZSet().remove(RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ARRIVE_SEND_TIME, orderGoodsId.getValue());
}
}
}
......
......@@ -103,7 +103,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> selectArriveSendOrderChildGe(String orderGoodsNo);
void batchUpdateOrderChildStatus(Integer status, String remark, LocalDateTime cancelTime, LocalDateTime finishTime, List<Integer> ids);
void batchUpdateOrderChildStatus(Integer status, String remark, String cancelTime, String finishTime, List<String> childNoList);
List<OrderChild> selectOrderChildListByOrderGoodsNoAndStatusGE(String orderGoodsNo, Integer status);
......
......@@ -312,8 +312,8 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
}
@Override
public void batchUpdateOrderChildStatus(Integer status, String remark, LocalDateTime cancelTime, LocalDateTime finishTime, List<Integer> ids) {
baseMapper.updateOrderGoodsSetResidueWeight(status,remark, cancelTime, finishTime, ids);
public void batchUpdateOrderChildStatus(Integer status, String remark, String cancelTime, String finishTime, List<String> childNoList) {
baseMapper.updateOrderGoodsSetResidueWeight(status,remark, cancelTime, finishTime, childNoList);
}
@Override
......
......@@ -49,6 +49,6 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
@UpdateProvider(type = OrderChildSqlProvider.class, method = "batchUpdateOrderChildStatus")
Integer updateOrderGoodsSetResidueWeight(@Param(value = "status") Integer status, @Param(value = "remark") String remark,
@Param(value = "cancelTime") LocalDateTime cancelTime, @Param(value = "finishTime") LocalDateTime finishTime,
@Param(value = "ids") List<Integer> ids);
@Param(value = "cancelTime") String cancelTime, @Param(value = "finishTime") String finishTime,
@Param(value = "childNoList") List<String> childNoList);
}
\ No newline at end of file
......@@ -78,4 +78,6 @@ public interface OrderChildService {
*/
List<OrderChild> selectInTransitOrderChild(String orderNo);
void orderChildFinish(String childNo);
}
......@@ -27,6 +27,7 @@ import com.clx.user.enums.driver.DriverInfoEnum;
import com.msl.common.enums.ResultEnum;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor;
......@@ -73,7 +74,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerConfirmCancelOrderPre(String orderNo) {
LocalDateTime now = LocalDateTime.now();
String now = DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss").get();
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode();
if (CollectionUtil.isEmpty(orderGoodsList)) {
......@@ -86,7 +87,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
ThawAccountParam thawAccountParam = new ThawAccountParam();
thawAccountParam.setOrderNo(orderNo);
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.NETWORK.getCode());
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode());
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
this.ownerConfirmCancelProcess(orderNo);
......@@ -112,17 +113,17 @@ public class OrderCancelServiceImpl implements OrderCancelService {
} else {
List<OrderChild> arriveSendChildList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
List<Integer> ids = new LinkedList<>();
List<String> childNoList = new LinkedList<>();
for (OrderChild orderChild : arriveSendChildList) {
//释放车辆
driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
ids.add(orderChild.getId());
childNoList.add(orderChild.getChildNo());
}
if (CollectionUtil.isNotEmpty(ids)) {
if (CollectionUtil.isNotEmpty(childNoList)) {
orderChildDao.batchUpdateOrderChildStatus(
OrderChildEnum.Status.PLATFORM_CANCEL.getCode(), "系统取消",
now, now,ids);
now, now,childNoList);
orderStatusCode = OrderEnum.Status.COMPLETED.getCode();
}
......@@ -170,7 +171,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
ThawAccountParam thawAccountParam = new ThawAccountParam();
thawAccountParam.setOrderNo(orderNo);
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.NETWORK.getCode());
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode());
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
......@@ -329,7 +330,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
ThawAccountParam thawAccountParam = new ThawAccountParam();
thawAccountParam.setOrderNo(orderNo);
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.NETWORK.getCode());
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode());
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
......@@ -352,7 +353,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
String orderNo = param.getOrderNo();
List<OrderGoods> orderGoodsList = null;
Integer orderStatusCode = OrderEnum.Status.CANCELED.getCode();
LocalDateTime now = LocalDateTime.now();
String now = DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss").get();
switch (param.getCancelType()) {
case 1: //单纯取消订单
if (CollectionUtil.isNotEmpty(orderChildDao.getOrderChildByOrderNo(orderNo))) {
......@@ -402,16 +403,16 @@ public class OrderCancelServiceImpl implements OrderCancelService {
if (CollectionUtil.isEmpty(orderChildren)) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前订单已发生变化,请重新选择取消方式");
}
List<Integer> ids = new LinkedList<>();
List<String > childNoList = new LinkedList<>();
for (OrderChild orderChild : orderChildren) {
//释放车辆
driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
ids.add(orderChild.getId());
childNoList.add(orderChild.getChildNo());
}
if (CollectionUtil.isNotEmpty(ids)) {
if (CollectionUtil.isNotEmpty(childNoList)) {
orderChildDao.batchUpdateOrderChildStatus(
OrderChildEnum.Status.OWNER_CANCEL.getCode(), "平台取消",
now, now, ids);
now, now, childNoList);
}
orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
......@@ -462,7 +463,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
//TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
ThawAccountParam thawAccountParam = new ThawAccountParam();
thawAccountParam.setOrderNo(orderNo);
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.NETWORK.getCode());
thawAccountParam.setOrderType(OwnerAccountEnum.OrderChildTypeStatus.ORDINARY.getCode());
log.info("执行解冻账户,参数:{}", JSONUtil.parse(thawAccountParam));
ownerAccountService.ownerAccountThaw(thawAccountParam);
......
......@@ -95,11 +95,6 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
BigDecimal dif = param.getLoadNet().subtract(orderChild.getLoadNet());
if (dif.compareTo(BigDecimal.ZERO) != 0) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_WEIGHT_NOT_EQ);
}
Integer type = OrderChildLogEnum.Type.POUND_AUDIT.getCode();
if(Objects.equals(param.getStatus(), OrderChildPoundAuditEnum.Status.REJECT.getCode())){
type = OrderChildLogEnum.Type.POUND_AUDIT_REJECT.getCode();
......@@ -144,11 +139,18 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
* 装车补偿
*/
private void updateOrderGoodsAmountLoad(OrderGoods orderGoods, BigDecimal dif){
if (dif.compareTo(BigDecimal.ZERO) == 0){return;}
int i = dif.compareTo(BigDecimal.ZERO);
if (i == 0){
return;
} else if (i > 0) {
if (orderGoods.getResidueTransportWeight().compareTo(dif) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_GOODS_WEIGHT_NOT_HAVE);
}
}
int count = orderChildDao.countValidByOrderGoodsNo(orderGoods.getOrderGoodsNo())-1;
Integer status = orderGoods.getOrderGoodsStatus();
Integer status;
if (count == 0){
status = OrderGoodsStatusEnum.Status.PAYING.getCode();
}
......
......@@ -6,8 +6,8 @@ import com.clx.order.enums.OrderEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.constant.RedisConstants;
import com.clx.performance.constant.RedissonConstants;
import com.clx.performance.dao.*;
import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao;
......@@ -27,10 +27,6 @@ import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.service.*;
import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.OrderChildPoundLogService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.breakcontract.BreakContractDriverRecordService;
import com.clx.performance.service.settle.SettlementDriverDetailService;
import com.clx.performance.service.settle.SettlementMqService;
......@@ -51,13 +47,13 @@ import com.msl.common.utils.LocalDateTimeUtils;
import com.msl.common.utils.gps.GpsUtil;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -78,43 +74,73 @@ import java.util.stream.Collectors;
*/
@Slf4j
@Service
@AllArgsConstructor
public class OrderChildServiceImpl implements OrderChildService {
private final AmqpTemplate rabbitTemplate;
private final RedisTemplate redisTemplate;
private final OrderGoodsDao orderGoodsDao;
private final OrderGoodsTruckBindDao orderGoodsTruckBindDao;
private final OrderChildDao orderChildDao;
private final OrderChildImageDao orderChildImageDao;
private final OrderChildPoundAuditDao orderChildPoundAuditDao;
private final OrderChildLogService orderChildLogService;
private final OrderChildPoundLogService orderChildPoundLogService;
private final AddressService addressService;
private final OrderService orderService;
private final GdService gdService;
private final DriverService driverService;
private final OrderChildStruct orderChildStruct;
private final OrderGoodsService orderGoodsService;
private final OrderChildPoundStruct orderChildPoundStruct;
private final OrderChildFreightStruct orderChildFreightStruct;
private final AddressStruct addressStruct;
private final OrderChildLogStruct orderChildLogStruct;
private final UniqueOrderNumService uniqueOrderNumService;
private final OrderFeign orderFeign;
private final RedissonClient redissonClient;
private final IntegralMqService integralMqService;
private final GoodsOrderTruckRecordComponent goodsOrderTruckRecordComponent;
private final BreakContractDriverRecordDao breakContractDriverRecordDao;
private final SettlementDriverDetailService settlementDriverDetailService;
private final SettlementOwnerDetailService settlementOwnerDetailService;
private final SettlementMqService settlementMqService;
private final OrderChildMqService orderChildMqService;
private final OwnerInfoService ownerInfoService;
private final BreakContractDriverRecordService breakContractDriverRecordService;
@Autowired
private AmqpTemplate rabbitTemplate;
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private OrderGoodsDao orderGoodsDao;
@Autowired
private OrderGoodsTruckBindDao orderGoodsTruckBindDao;
@Autowired
private OrderChildDao orderChildDao;
@Autowired
private OrderChildImageDao orderChildImageDao;
@Autowired
private OrderChildPoundAuditDao orderChildPoundAuditDao;
@Autowired
private OrderChildLogService orderChildLogService;
@Autowired
private OrderChildPoundLogService orderChildPoundLogService;
@Autowired
private AddressService addressService;
@Autowired
private OrderService orderService;
@Autowired
private GdService gdService;
@Autowired
private DriverService driverService;
@Autowired
private OrderChildStruct orderChildStruct;
@Autowired
private OrderGoodsService orderGoodsService;
@Autowired
private OrderChildPoundStruct orderChildPoundStruct;
@Autowired
private OrderChildFreightStruct orderChildFreightStruct;
@Autowired
private AddressStruct addressStruct;
@Autowired
private OrderChildLogStruct orderChildLogStruct;
@Autowired
private UniqueOrderNumService uniqueOrderNumService;
@Autowired
private OrderFeign orderFeign;
@Autowired
private RedissonClient redissonClient;
@Autowired
private IntegralMqService integralMqService;
@Autowired
private GoodsOrderTruckRecordComponent goodsOrderTruckRecordComponent;
@Autowired
private BreakContractDriverRecordDao breakContractDriverRecordDao;
@Autowired
private SettlementDriverDetailService settlementDriverDetailService;
@Autowired
private SettlementOwnerDetailService settlementOwnerDetailService;
@Autowired
private SettlementMqService settlementMqService;
@Autowired
private OrderChildMqService orderChildMqService;
@Autowired
private OwnerInfoService ownerInfoService;
@Autowired
private BreakContractDriverRecordService breakContractDriverRecordService;
@Override
public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) {
......@@ -1188,6 +1214,14 @@ public class OrderChildServiceImpl implements OrderChildService {
}
@Override
public void orderChildFinish(String childNo){
// 运单结束 统计积分
integralMqService.orderChildFinish(childNo);
}
/**
* 生成计费单
*/
......@@ -1358,11 +1392,15 @@ public class OrderChildServiceImpl implements OrderChildService {
* 装车补偿
*/
private void updateOrderGoodsAmountLoad(OrderGoods orderGoods, BigDecimal dif) {
if (dif.compareTo(BigDecimal.ZERO) == 0) {
int i = dif.compareTo(BigDecimal.ZERO);
if (i == 0){
return;
} else if (i > 0) {
if (orderGoods.getResidueTransportWeight().compareTo(dif) < 0) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_GOODS_WEIGHT_NOT_HAVE);
}
}
Integer status = OrderGoodsStatusEnum.Status.GO_TO_SEND.getCode();
orderGoodsService.updateOrderGoodsReduceWeightAndStatusAmountLoad(orderGoods, dif, status);
......
......@@ -30,6 +30,8 @@ import com.clx.performance.param.app.OrderGoodsListPageParam;
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.IntegralMqService;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsLogService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.struct.OrderGoodsStruct;
......@@ -93,12 +95,15 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
private GoodsOrderTruckRecordComponent goodsOrderTruckRecordComponent;
private OrderGoodsStatusLazyComponent orderGoodsStatusLazyComponent;
private DriverService driverService;
private OrderCancelComponent orderCancelComponent;
private final IntegralMqService integralMqService;
@Override
public OrderGoodsVO getOrderGoodsInfoByOrderGoodsNoForPC(String orderGoodsNo) {
OrderGoodsVO orderGoodsVO = orderGoodsDao.getOrderGoodsInfoByOrderGoodsNoForPC(orderGoodsNo).map(orderGoodsStruct::convert).get();
......@@ -132,6 +137,9 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
if (orderGoods.getOrderGoodsStatus().equals(OrderGoodsStatusEnum.Status.CANCEL.getCode())
|| orderGoods.getOrderGoodsStatus().equals(OrderGoodsStatusEnum.Status.COMPLETED.getCode())
) {
if (orderChildWeight.compareTo(BigDecimal.ZERO) < 0) {
orderChildWeight = orderChildWeight.negate();
}
//当前订单已经取消或完结
orderCancelComponent.backFillTonnage(orderGoods, orderChildWeight);
} else {
......@@ -402,6 +410,9 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
for (OrderGoodsTruckBind bind : getChildList) {
if (!truckList.contains(bind.getTruckNo())) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "当前取消的车辆已经接单,车牌号为:" + bind.getTruckNo());
} else {
//已存在的记录不需要重新创建绑定记录
truckList.remove(bind.getTruckNo());
}
}
}
......@@ -462,11 +473,11 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
public void orderGoodsCancel(OrderGoodsCancelParam goodsCancelParam) {
String orderGoodsNo = goodsCancelParam.getOrderGoodsNo();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderGoodsNo).orElseThrow(PerformanceResultEnum.HTTP_ERROR, "数据错误");
LocalDateTime now = LocalDateTime.now();
String now = DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss").get();
List<OrderChild> orderChildList = null;
BigDecimal residueWeight = null;
BigDecimal sum = BigDecimal.ZERO;
List<Integer> ids = new LinkedList<>();
List<String> childNoList = new LinkedList<>();
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
Integer cancelOperateType = goodsCancelParam.getCancelOperateType();
......@@ -511,12 +522,12 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
if (CollectionUtils.isNotEmpty(filterOrderChildList)) {
for (OrderChild orderChild : filterOrderChildList) {
driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
ids.add(orderChild.getId());
childNoList.add(orderChild.getChildNo());
sum = sum.add(orderChild.getWeight());
}
orderChildDao.batchUpdateOrderChildStatus(
OrderChildEnum.Status.PLATFORM_CANCEL.getCode(), "系统取消",
now,now,ids);
now,now,childNoList);
}
orderChildList.removeAll(filterOrderChildList);
if (CollectionUtil.isNotEmpty(orderChildList)) {
......@@ -558,12 +569,12 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
for (OrderChild orderChild : filterOrderChildList) {
driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
ids.add(orderChild.getId());
childNoList.add(orderChild.getChildNo());
sum = sum.add(orderChild.getWeight());
}
orderChildDao.batchUpdateOrderChildStatus(
OrderChildEnum.Status.PLATFORM_CANCEL.getCode(),"系统取消",
now, now, ids);
now, now, childNoList);
orderChildList.removeAll(filterOrderChildList);
if (CollectionUtil.isNotEmpty(orderChildList)) {
orderGoodsStatus = OrderGoodsStatusEnum.Status.COMPLETED.getCode();
......@@ -607,6 +618,9 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
orderFeign.orderCancelReason(orderCancelReasonParam);
for (String childNo : childNoList) {
integralMqService.orderChildFinish(childNo);
}
orderGoodsLogService.saveLog(orderGoodsNo, loginUserInfo.getUserNo(), loginUserInfo.getUserName(), OrderGoodsLogsEnum.Type.CANCEL.getName(), "");
}
......
......@@ -250,7 +250,6 @@ public class TruckServiceImpl implements TruckService {
private Map<String,Integer> getTruckStatusMap(){
//查询平台所有车辆的出车状态信息
Result<List<TruckUseStatusVO>> result = userClxFeign.getPlatformTruckStatus();
log.info("通过clx-user服务获取平台认证成功车辆出车状态列表,返回结果:{}", JSON.toJSONString(result));
if(!Objects.equals(result.getCode(), ResultCodeEnum.SUCCESS.getCode())){
throw new ServiceSystemException(ResultEnum.DATA_NOT_FIND,"查询车辆出车状态信息失败");
......
......@@ -54,9 +54,10 @@ public class BreakContractSettlementDriverDetailServiceImpl implements BreakCon
List<ExcelField> fieldList = new ArrayList<>();
fieldList.add(new ExcelField(0, "序号", "index", 2000));
fieldList.add(new ExcelField(1, "违约单号", "breakNo", 5000));
fieldList.add(new ExcelField(2, "车主编码", "truckOwnUserNo", 5000));
fieldList.add(new ExcelField(3, "车主名称", "truckOwnUserName", 5000));
fieldList.add(new ExcelField(4, "运单编号", "childNo", 5000));
fieldList.add(new ExcelField(2, "运单编号", "childNo", 5000));
fieldList.add(new ExcelField(3, "车主编码", "truckOwnUserNo", 5000));
fieldList.add(new ExcelField(4, "车主名称", "truckOwnUserName", 5000));
fieldList.add(new ExcelField(5, "司机名称", "driverName", 5000));
fieldList.add(new ExcelField(6, "违约方", "breakContractPartyType", 5000));
......@@ -74,9 +75,10 @@ public class BreakContractSettlementDriverDetailServiceImpl implements BreakCon
rowData.add(new ExcelData(i+1));
rowData.add(new ExcelData(dto.getBreakNo()));
rowData.add(new ExcelData(dto.getChildNo()));
rowData.add(new ExcelData(dto.getTruckOwnUserNo()+""));
rowData.add(new ExcelData(dto.getTruckOwnName()));
rowData.add(new ExcelData(dto.getChildNo()));
rowData.add(new ExcelData(dto.getDriverName()));
rowData.add(new ExcelData(dto.getBreakContractPartyTypeMsg()));
......
......@@ -57,15 +57,16 @@ public class BreakContractSettlementDriverServiceImpl implements BreakContractSe
fieldList.add(new ExcelField(1, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(2, "运单编号", "childNo", 5000));
fieldList.add(new ExcelField(3, "车主编号", "truckOwnerNo", 5000));
fieldList.add(new ExcelField(4, "车主名称", "truckOwnerName", 5000));
fieldList.add(new ExcelField(4, "司机名称", "driverName", 5000));
fieldList.add(new ExcelField(5, "违约方", "breakContractPartyType", 5000));
fieldList.add(new ExcelField(6, "违约金额", "figure", 5000));
fieldList.add(new ExcelField(7, "创建人", "createName", 5000));
fieldList.add(new ExcelField(8, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(9, "结算平台", "settlePlatform", 5000));
fieldList.add(new ExcelField(9, "结算状态", "settleStatus", 5000));
fieldList.add(new ExcelField(9, "结算时间", "settleTime", 5000));
fieldList.add(new ExcelField(5, "司机名称", "driverName", 5000));
fieldList.add(new ExcelField(6, "违约方", "breakContractPartyType", 5000));
fieldList.add(new ExcelField(7, "违约金额", "figure", 5000));
fieldList.add(new ExcelField(8, "创建人", "createName", 5000));
fieldList.add(new ExcelField(9, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(10, "结算平台", "settlePlatform", 5000));
fieldList.add(new ExcelField(11, "结算状态", "settleStatus", 5000));
fieldList.add(new ExcelField(12, "结算时间", "settleTime", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
......@@ -78,6 +79,7 @@ public class BreakContractSettlementDriverServiceImpl implements BreakContractSe
rowData.add(new ExcelData(dto.getSettlementNo()));
rowData.add(new ExcelData(dto.getChildNo()));
rowData.add(new ExcelData(dto.getTruckOwnUserNo()+""));
rowData.add(new ExcelData(dto.getTruckOwnName()));
rowData.add(new ExcelData(dto.getDriverName()));
rowData.add(new ExcelData(dto.getBreakContractPartyTypeMsg()));
......
......@@ -465,7 +465,8 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
if(Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.CREATED.getCode())
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.PAY.getCode())
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.GO_TO_SEND.getCode())) {
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.GO_TO_SEND.getCode())
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.OWNER_CANCEL.getCode())) {
cancelWeight = cancelWeight.add(orderChild.getWeight());
seconds = seconds.add(new BigDecimal(LocalDateTimeUtils.getSecondsDiff(orderChild.getPayTime(),now)));
}
......@@ -477,7 +478,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
BigDecimal baseFigure = totalFreight.multiply(orderCancelRule.getAfterRatio()).multiply(cancelWeight)
.divide(transportWeight,2, BigDecimal.ROUND_HALF_UP);
BigDecimal truckFigure = BigDecimal.ZERO;
if(Objects.equals(cancelType,CancelOrderEnum.Type.NOT_ARRIVE)){
if(Objects.equals(cancelType,CancelOrderEnum.Type.NOT_ARRIVE.getCode())){
truckFigure = seconds.multiply(orderCancelRule.getAfterFigurePerHour())
.divide(new BigDecimal(3600),2, BigDecimal.ROUND_HALF_UP);
}
......
......@@ -128,18 +128,18 @@ public class OrderChildSqlProvider {
public String batchUpdateOrderChildStatus(@Param(value ="status") Integer status, @Param(value ="remark") String remark,
@Param(value = "cancelTime") LocalDateTime cancelTime, @Param(value = "finishTime") LocalDateTime finishTime,
@Param(value = "ids") List<Integer> ids ){
@Param(value = "cancelTime") String cancelTime, @Param(value = "finishTime") String finishTime,
@Param(value = "childNoList") List<String> childNoList ){
StringBuffer sqlList = new StringBuffer();
sqlList.append("update order_child set cancel_remark = '"+ remark +"' ,status = " + status + ",cancel_time = "
+ cancelTime +",finish_time = " + finishTime + " where id in (");
for (int i = 0; i < ids.size(); i++) {
Integer id = ids.get(i);
sqlList.append("update order_child set cancel_remark = '"+ remark +"' ,status = " + status + ",cancel_time = '"
+ cancelTime +"',finish_time = '" + finishTime + "' where child_no in (");
for (int i = 0; i < childNoList.size(); i++) {
String childNo = childNoList.get(i);
sqlList.append("'").append(id).append("'");
sqlList.append("'").append(childNo).append("'");
if (i < ids.size() - 1) {
if (i < childNoList.size() - 1) {
sqlList.append(",");
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论