提交 0d59df72 authored 作者: 刘海泉's avatar 刘海泉

Merge remote-tracking branch 'origin/v17.3_youhua_20240615' into release

# Conflicts: # performance-api/src/main/java/com/clx/performance/feign/PerformanceFeign.java # performance-web/src/main/java/com/clx/performance/controller/temp/TempTraceController.java # performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java # performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java # performance-web/src/main/java/com/clx/performance/mapper/OrderChildMapper.java # performance-web/src/main/java/com/clx/performance/service/OrderGoodsService.java
package com.clx.performance.feign; package com.clx.performance.feign;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.vo.pc.child.OrderChildLineStatisticsVO; import com.clx.performance.vo.pc.child.OrderChildLineStatisticsVO;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
...@@ -29,5 +29,8 @@ public interface OrderChildFeign { ...@@ -29,5 +29,8 @@ public interface OrderChildFeign {
@RequestMapping(value = "clx-performance/feign/orderChild/getInvoiceType", method = RequestMethod.GET) @RequestMapping(value = "clx-performance/feign/orderChild/getInvoiceType", method = RequestMethod.GET)
Result<Integer> getInvoiceType(@RequestParam("orderNo") @NotBlank(message = "订单编号不能为空") String orderNo); Result<Integer> getInvoiceType(@RequestParam("orderNo") @NotBlank(message = "订单编号不能为空") String orderNo);
@PostMapping(value = {"clx-performance/feign/orderChild/cancelOrderChild"})
Result<Object> cancelOrderChild(@RequestBody @Validated CancelOrderGoodsParam param);
} }
package com.clx.performance.feign; package com.clx.performance.feign;
import com.clx.performance.param.app.collect.CollectTruckParam; import com.clx.performance.param.app.collect.CollectTruckParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam; import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.feign.OrderAdjustTonnageDownParam; import com.clx.performance.param.feign.OrderAdjustTonnageDownParam;
import com.clx.performance.param.pc.OrderCancelFeignParam; import com.clx.performance.param.pc.OrderCancelFeignParam;
...@@ -144,4 +145,12 @@ public interface PerformanceFeign { ...@@ -144,4 +145,12 @@ public interface PerformanceFeign {
*/ */
@GetMapping(value = {"clx-performance/feign/platformServiceFee/getPlatformServiceFeeConfig"}) @GetMapping(value = {"clx-performance/feign/platformServiceFee/getPlatformServiceFeeConfig"})
Result<PlatformServiceFeeConfigFeignVO> getPlatformServiceFeeConfig(); Result<PlatformServiceFeeConfigFeignVO> getPlatformServiceFeeConfig();
/**
* 取消货单
* @param param
* @return
*/
@PostMapping(value = {"clx-performance/feign/orderGoods/cancelOrderGoods"})
Result<Object> cancelOrderGoods(@RequestBody @Validated CancelOrderGoodsParam param);
} }
package com.clx.performance.param.feign;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
@Getter
@Setter
public class CancelOrderGoodsParam {
@NotBlank(message = "订单编号不能为空")
@ApiModelProperty("订单编号")
private String orderNo;
@NotNull(message = "操作人编号不能为空")
@ApiModelProperty("操作人编号")
private Long createBy;
@NotNull(message = "操作人名称不能为空")
@Size(max=32,message = "操作人名称最多输入32个字符")
@ApiModelProperty("操作人名称")
private String createName;
@NotNull(message = "调整货物吨数不能为空")
@ApiModelProperty("调前煤炭交易数(吨)")
@DecimalMax(value = "999999999999.99",message = "调整货物吨数不能大于999999999999.99吨")
private BigDecimal beforeWeight;
@NotNull(message = "调整货物吨数不能为空")
@ApiModelProperty("调后煤炭交易数(吨)")
@DecimalMax(value = "999999999999.99",message = "调整货物吨数不能大于999999999999.99吨")
private BigDecimal afterWeight;
@NotNull(message = "已挂单的吨数不能为空")
@ApiModelProperty("已挂单的吨数(吨)")
@DecimalMax(value = "999999999999.99",message = "调整货物吨数不能大于999999999999.99吨")
private BigDecimal orderedWeight;
}
...@@ -2,6 +2,7 @@ package com.clx.performance.constant; ...@@ -2,6 +2,7 @@ package com.clx.performance.constant;
public class RabbitKeyConstants { public class RabbitKeyConstants {
//更改订单状态为挂单中
public static final String ORDER_POSTED_QUEUE = "clx-order.order.posted.queue"; public static final String ORDER_POSTED_QUEUE = "clx-order.order.posted.queue";
//改订单状态为已挂单 //改订单状态为已挂单
...@@ -12,16 +13,18 @@ public class RabbitKeyConstants { ...@@ -12,16 +13,18 @@ public class RabbitKeyConstants {
public static final String ORDER_ON_ROUTE_KEY ="clx-order.order.on.route.key"; public static final String ORDER_ON_ROUTE_KEY ="clx-order.order.on.route.key";
/*
public static final String ORDER_ON_DEAD_ROUTE_KEY ="clx-order.order.on.dead.route.key"; public static final String ORDER_ON_DEAD_ROUTE_KEY ="clx-order.order.on.dead.route.key";
*/
public static final String ORDER_ON_QUEUE ="clx-order.order.on.queue"; public static final String ORDER_ON_QUEUE ="clx-order.order.on.queue";
public static final String ORDER_ON_EXCHANGE ="clx-order.order.on.exchange"; public static final String ORDER_ON_EXCHANGE ="clx-order.order.on.exchange";
//更改订单状态为挂单中
public static final String ORDER_ON_DEAD_EXCHANGE ="clx-order.order.on.dead.exchange";
public static final String ORDER_ON_DEAD_QUEUE ="clx-order.order.on.dead.queue"; /* public static final String ORDER_ON_DEAD_EXCHANGE ="clx-order.order.on.dead.exchange";
public static final String ORDER_ON_DEAD_QUEUE ="clx-order.order.on.dead.queue";*/
public static final String ORDER_GOODS_SYNC_TRUCK_DRIVER_INFO_QUEUE = "clx-performance.order.goods.sync.truck.driver.info.queue"; public static final String ORDER_GOODS_SYNC_TRUCK_DRIVER_INFO_QUEUE = "clx-performance.order.goods.sync.truck.driver.info.queue";
......
...@@ -2,6 +2,7 @@ package com.clx.performance.controller.feign; ...@@ -2,6 +2,7 @@ package com.clx.performance.controller.feign;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.service.LastTruckService; import com.clx.performance.service.LastTruckService;
import com.clx.performance.service.OrderChildService; import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.child.FeignOrderChildService; import com.clx.performance.service.child.FeignOrderChildService;
...@@ -88,4 +89,11 @@ public class OrderChildFeignController { ...@@ -88,4 +89,11 @@ public class OrderChildFeignController {
return Result.ok(settlementOwnerDetailService.getInvoiceType(orderNo)); return Result.ok(settlementOwnerDetailService.getInvoiceType(orderNo));
} }
@ApiOperation(value = "取消运单", notes = "<br>By:李瑞新")
@PostMapping({"/cancelOrderChild"})
Result<Object> cancelOrderChild(@RequestBody @Validated CancelOrderGoodsParam param) {
orderChildService.cancelOrderChilds(param);
return Result.ok();
}
} }
package com.clx.performance.controller.feign; package com.clx.performance.controller.feign;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam; import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.OrderChildReportParam; import com.clx.performance.param.pc.OrderChildReportParam;
import com.clx.performance.service.OrderGoodsService; import com.clx.performance.service.OrderGoodsService;
...@@ -56,6 +57,13 @@ public class OrderGoodsFeignController { ...@@ -56,6 +57,13 @@ public class OrderGoodsFeignController {
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "取消货单", notes = "<br>By:李瑞新")
@PostMapping({"/cancelOrderGoods"})
Result<Object> cancelOrderGoods(@RequestBody @Validated CancelOrderGoodsParam param) {
orderGoodsService.cancelOrderGoods(param);
return Result.ok();
}
@ApiOperation(value = "更新挂单运费", notes = "<br>By:艾庆国") @ApiOperation(value = "更新挂单运费", notes = "<br>By:艾庆国")
@PostMapping(value = {"/updatePendingOrderFright"}) @PostMapping(value = {"/updatePendingOrderFright"})
......
...@@ -174,8 +174,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -174,8 +174,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
Integer sendSystemAddressId, Integer receiveSystemAddressId, Integer sendSystemAddressId, Integer receiveSystemAddressId,
String beginTime); String beginTime);
Integer unloadTimeAvg(Integer sendAddressId, Integer receiveAddressId, Integer unloadTimeAvg(Integer sendAddressId, Integer receiveAddressId,
Integer sendSystemAddressId, Integer receiveSystemAddressId, Integer sendSystemAddressId, Integer receiveSystemAddressId,
String beginTime); String beginTime);
List<OrderChild> listByChildNoList(List<String> childNoList); List<OrderChild> listByChildNoList(List<String> childNoList);
...@@ -192,5 +192,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -192,5 +192,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<LineWarnOrderChildStatisticsDTO>sumLoadNumByOrderGoodsNoList(List<String> orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO>sumLoadNumByOrderGoodsNoList(List<String> orderGoodsNoList);
List<LineWarnOrderChildStatisticsDTO>sumArriveRecieveNumByOrderGoodsNoList(List<String> orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO>sumArriveRecieveNumByOrderGoodsNoList(List<String> orderGoodsNoList);
List<LineWarnOrderChildStatisticsDTO>sumUnloadNumByOrderGoodsNoList(List<String> orderGoodsNoList); List<LineWarnOrderChildStatisticsDTO>sumUnloadNumByOrderGoodsNoList(List<String> orderGoodsNoList);
List<OrderChild> listByOrderNo(String orderNo,List<Integer> status);
void updateBatchOwnerCancel(List<String> childNos);
} }
...@@ -101,4 +101,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int ...@@ -101,4 +101,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
void batchUpdateResidueWeight(List<Integer> list, BigDecimal residueWeight); void batchUpdateResidueWeight(List<Integer> list, BigDecimal residueWeight);
List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList(); List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList();
void cancelOrderGoods(String orderNo);
} }
...@@ -558,7 +558,9 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -558,7 +558,9 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
} }
@Override @Override
public Integer loadTimeAvg(Integer sendAddressId, Integer receiveAddressId, Integer sendSystemAddressId, Integer receiveSystemAddressId, String beginTime) { public Integer loadTimeAvg(Integer sendAddressId, Integer receiveAddressId,
Integer sendSystemAddressId, Integer receiveSystemAddressId,
String beginTime) {
return baseMapper.loadTimeAvg(sendAddressId,receiveAddressId, return baseMapper.loadTimeAvg(sendAddressId,receiveAddressId,
sendSystemAddressId,receiveSystemAddressId, sendSystemAddressId,receiveSystemAddressId,
beginTime); beginTime);
...@@ -629,4 +631,23 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -629,4 +631,23 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
public List<LineWarnOrderChildStatisticsDTO> sumUnloadNumByOrderGoodsNoList(List<String> orderGoodsNoList) { public List<LineWarnOrderChildStatisticsDTO> sumUnloadNumByOrderGoodsNoList(List<String> orderGoodsNoList) {
return baseMapper.sumUnloadNumByOrderGoodsNoList(orderGoodsNoList); return baseMapper.sumUnloadNumByOrderGoodsNoList(orderGoodsNoList);
} }
@Override
public List<OrderChild> listByOrderNo(String orderNo,List<Integer> status) {
return list(lQrWrapper()
.eq(OrderChild :: getOrderNo,orderNo)
.in(OrderChild :: getStatus,status)
);
}
@Override
public void updateBatchOwnerCancel(List<String> childNos){
update(lUdWrapper()
.in(OrderChild::getChildNo, childNos)
.set(OrderChild::getStatus, OrderChildEnum.Status.OWNER_CANCEL.getCode())
.set(OrderChild::getCancelTime,LocalDateTime.now())
.set(OrderChild::getFinishTime,LocalDateTime.now())
.set(OrderChild::getCancelRemark,"货主减少拉运吨数,系统自动取消")
);
}
} }
...@@ -284,4 +284,12 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, ...@@ -284,4 +284,12 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
public List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList() { public List<OrderGoodsFleetOpenTruck> queryProcessFleetOpenTruckList() {
return baseMapper.queryProcessFleetOpenTruckList(); return baseMapper.queryProcessFleetOpenTruckList();
} }
@Override
public void cancelOrderGoods(String orderNo) {
update(lUdWrapper()
.eq(OrderGoods::getOrderNo, orderNo)
.set(OrderGoods::getOrderGoodsStatus, OrderGoodsStatusEnum.Status.CANCEL.getCode())
);
}
} }
...@@ -10,7 +10,10 @@ import com.msl.common.base.Optional; ...@@ -10,7 +10,10 @@ import com.msl.common.base.Optional;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -29,6 +32,9 @@ public class RabbitOrderGoodsStatusOnHandler { ...@@ -29,6 +32,9 @@ public class RabbitOrderGoodsStatusOnHandler {
@Autowired @Autowired
private LineWarnMqService lineWarnMqService; private LineWarnMqService lineWarnMqService;
@Autowired
private RabbitTemplate rabbitTemplate;
@RabbitListener(queues = RabbitKeyConstants.ORDER_GOODS_ON_DEAD_QUEUE) @RabbitListener(queues = RabbitKeyConstants.ORDER_GOODS_ON_DEAD_QUEUE)
public void onMessage(String message) { public void onMessage(String message) {
log.info("处理货单状态由已挂单变为挂弹中监听器执行,货单ID为{}", message); log.info("处理货单状态由已挂单变为挂弹中监听器执行,货单ID为{}", message);
...@@ -45,6 +51,14 @@ public class RabbitOrderGoodsStatusOnHandler { ...@@ -45,6 +51,14 @@ public class RabbitOrderGoodsStatusOnHandler {
log.info("处理货单状态由已挂单变为挂单中监听器执行,从状态{}-----变更为{}", orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.PAYING.getName()); log.info("处理货单状态由已挂单变为挂单中监听器执行,从状态{}-----变更为{}", orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.PAYING.getName());
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoods.getOrderGoodsNo(), OrderGoodsStatusEnum.Status.PAYING.getCode()); orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoods.getOrderGoodsNo(), OrderGoodsStatusEnum.Status.PAYING.getCode());
Message orderNoMessage = MessageBuilder.withBody(orderGoods.getOrderNo().getBytes()).build();
//发送mq,更改货单对应的订单为挂单中
rabbitTemplate.send(
RabbitKeyConstants.ORDER_POSTED_EXCHANGE, RabbitKeyConstants.ORDER_POSTED_ROUTE_KEY, orderNoMessage
);
// 发送mq // 发送mq
lineWarnMqService.orderGoodsAdd(orderGoods.getOrderGoodsNo()); lineWarnMqService.orderGoodsAdd(orderGoods.getOrderGoodsNo());
......
...@@ -122,6 +122,7 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> { ...@@ -122,6 +122,7 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
@SelectProvider(type = OrderChildSqlProvider.class, method = "statisticsTruckMonth") @SelectProvider(type = OrderChildSqlProvider.class, method = "statisticsTruckMonth")
MonthInComeAndOrderedVO statisticsTruckMonth(@Param("startTime")LocalDateTime startTime, @Param("endTime")LocalDateTime endTime, @Param("truckNo")String truckNo); MonthInComeAndOrderedVO statisticsTruckMonth(@Param("startTime")LocalDateTime startTime, @Param("endTime")LocalDateTime endTime, @Param("truckNo")String truckNo);
@Select("select sum(if (status>=50, load_net, #{defaultWeight})) from order_child " + @Select("select sum(if (status>=50, load_net, #{defaultWeight})) from order_child " +
" where order_goods_no=#{orderGoodsNo} and status in(10,20,30,40,50,60,70,80,90,100)") " where order_goods_no=#{orderGoodsNo} and status in(10,20,30,40,50,60,70,80,90,100)")
BigDecimal sumTakeWeightByOrderGoodsNo(String orderGoodsNo, BigDecimal defaultWeight); BigDecimal sumTakeWeightByOrderGoodsNo(String orderGoodsNo, BigDecimal defaultWeight);
......
package com.clx.performance.service; package com.clx.performance.service;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildLog; import com.clx.performance.model.OrderChildLog;
import java.util.List; import java.util.List;
...@@ -13,4 +14,6 @@ public interface OrderChildLogService { ...@@ -13,4 +14,6 @@ public interface OrderChildLogService {
List<OrderChildLog> getOrderChildNodeLog(String childNo); List<OrderChildLog> getOrderChildNodeLog(String childNo);
void saveCarrierOrderChildLog(String childNo, Integer type, String remark, Long createBy, String createName); void saveCarrierOrderChildLog(String childNo, Integer type, String remark, Long createBy, String createName);
void saveBatchOrderChildLog(List<OrderChildLog> logs);
} }
...@@ -5,6 +5,7 @@ import com.clx.performance.model.OrderChild; ...@@ -5,6 +5,7 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.*; import com.clx.performance.param.app.*;
import com.clx.performance.param.app.owner.PageOwnerOrderChildListParam; import com.clx.performance.param.app.owner.PageOwnerOrderChildListParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam; import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam; import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam; import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
...@@ -96,4 +97,6 @@ public interface OrderChildService { ...@@ -96,4 +97,6 @@ public interface OrderChildService {
OrderChildVO getOwnerOrderChildInfo(String childNo); OrderChildVO getOwnerOrderChildInfo(String childNo);
Integer getOrderChildCheck(OrderChildCheckParam param); Integer getOrderChildCheck(OrderChildCheckParam param);
void cancelOrderChilds(CancelOrderGoodsParam param);
} }
package com.clx.performance.service; package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderGoodsLog;
import com.clx.performance.param.pc.OrderGoodsLogParam; import com.clx.performance.param.pc.OrderGoodsLogParam;
import com.clx.performance.vo.pc.OrderGoodsLogVO; import com.clx.performance.vo.pc.OrderGoodsLogVO;
import java.util.List;
/** /**
* @author kavin * @author kavin
* Date 2023-10-26 * Date 2023-10-26
...@@ -13,4 +16,6 @@ public interface OrderGoodsLogService { ...@@ -13,4 +16,6 @@ public interface OrderGoodsLogService {
void saveLog(String orderGoodsNo,Long userNo,String userName,String type,String remark); void saveLog(String orderGoodsNo,Long userNo,String userName,String type,String remark);
IPage<OrderGoodsLogVO> pageOrderGoodsLog(OrderGoodsLogParam param); IPage<OrderGoodsLogVO> pageOrderGoodsLog(OrderGoodsLogParam param);
void saveBatchLog(List<OrderGoodsLog> logs);
} }
...@@ -5,6 +5,7 @@ import com.clx.performance.model.OrderChild; ...@@ -5,6 +5,7 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.AppGoodsOrderSearchParam; import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.app.OrderGoodsListPageParam; import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam; import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.*; import com.clx.performance.param.pc.*;
import com.clx.performance.vo.app.OrderGoodsAPPVO; import com.clx.performance.vo.app.OrderGoodsAPPVO;
...@@ -104,4 +105,6 @@ public interface OrderGoodsService { ...@@ -104,4 +105,6 @@ public interface OrderGoodsService {
void saveBindTruck(DistributionTruckParam param); void saveBindTruck(DistributionTruckParam param);
void updateFrightPrice(String orderGoodsNo,BigDecimal pendingOrderFreight); void updateFrightPrice(String orderGoodsNo,BigDecimal pendingOrderFreight);
void cancelOrderGoods(CancelOrderGoodsParam param);
} }
...@@ -48,4 +48,8 @@ public class OrderChildLogServiceImpl implements OrderChildLogService { ...@@ -48,4 +48,8 @@ public class OrderChildLogServiceImpl implements OrderChildLogService {
} }
@Override
public void saveBatchOrderChildLog(List<OrderChildLog> logs) {
orderChildLogDao.saveBatchList(logs);
}
} }
...@@ -37,6 +37,7 @@ import com.clx.performance.model.breakcontract.BreakContractDriverRecord; ...@@ -37,6 +37,7 @@ import com.clx.performance.model.breakcontract.BreakContractDriverRecord;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.app.*; import com.clx.performance.param.app.*;
import com.clx.performance.param.app.owner.PageOwnerOrderChildListParam; import com.clx.performance.param.app.owner.PageOwnerOrderChildListParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam; import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PageCarrierOrderChildParam; import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam; import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
...@@ -2637,4 +2638,75 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2637,4 +2638,75 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
return new Page<>(); return new Page<>();
} }
@Override
public void cancelOrderChilds(CancelOrderGoodsParam param) {
BigDecimal orderedWeight = param.getOrderedWeight();//已挂的吨数
BigDecimal availableWeight = param.getAfterWeight();//可拉运吨数
List<Integer> arriveAfterStatus = new ArrayList<>();//到达货源地后运单状态
arriveAfterStatus.add(OrderChildEnum.Status.ARRIVE_SEND.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.LOAD.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.GO_TO_RECEIVE.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.ARRIVE_RECEIVE.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.UNLOAD.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.UNSETTLE.getCode());
arriveAfterStatus.add(OrderChildEnum.Status.COMPLETE.getCode());
List<Integer> arriveBeforeStatus = new ArrayList<>();//未到达货源地运单状态
arriveBeforeStatus.add(OrderChildEnum.Status.CREATED.getCode());
arriveBeforeStatus.add(OrderChildEnum.Status.PAY.getCode());
arriveBeforeStatus.add(OrderChildEnum.Status.GO_TO_SEND.getCode());
List<String> childNos;//取消运单
//未到达货源地之前运单(不包括取消)
List<OrderChild> arriveBeforeOrderChild = orderChildDao.listByOrderNo(param.getOrderNo(),arriveBeforeStatus);
log.info("arriveBeforeOrderChild:{}",arriveBeforeOrderChild);
if(orderedWeight.compareTo(availableWeight) > 0){//已挂吨数大于可拉运吨数 取消未到达货源地的运单
log.info("已挂吨数大于可拉运吨数,取消未到达货源地的运单:{}",orderedWeight.compareTo(availableWeight));
//到达货源地之后运单(不包括取消)
List<OrderChild> arriveAfterOrderChild = orderChildDao.listByOrderNo(param.getOrderNo(),arriveAfterStatus);
log.info("arriveAfterOrderChild:{}",arriveAfterOrderChild);
BigDecimal arriveAfterWeight = arriveAfterOrderChild.stream().map(OrderChild::getWeight)
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);//总拉运吨数
log.info("总拉运吨数:{}",arriveAfterWeight);
if(availableWeight.compareTo(arriveAfterWeight) >0){//可拉运吨数大于运单拉运吨数 取消未到达货源地的运单
log.info("可拉运吨数大于运单拉运吨数,取消未到达货源地的运单:{}",availableWeight.compareTo(arriveAfterWeight));
BigDecimal weight =BigDecimal.ZERO;//运单累加吨数
BigDecimal subtract = availableWeight.subtract(arriveAfterWeight);//可拉运吨数-运单拉运吨数=司机可以接单拉运吨数
List<String> notCancelChildNos = new ArrayList<>();//不需要取消的运单
for(OrderChild oc:arriveBeforeOrderChild){
weight = weight.add(oc.getWeight());
if(weight.compareTo(subtract) >=0){
break;
}
notCancelChildNos.add(oc.getChildNo());//获取可以取消的运单
}
log.info("notCancelChildNos:{}",notCancelChildNos);
childNos = arriveBeforeOrderChild.stream().map(OrderChild::getChildNo).collect(Collectors.toList());//未到达货源地
childNos.removeAll(notCancelChildNos);//剔除不需要取消的运单
}else{
childNos = arriveBeforeOrderChild.stream().map(OrderChild::getChildNo).collect(Collectors.toList());//未到达货源地
}
log.info("批量取消运单:childNos:{}",childNos);
//批量取消运单
if(CollectionUtils.isNotEmpty(childNos)){
orderChildDao.updateBatchOwnerCancel(childNos);
//保存日志
List<OrderChildLog> logs = new ArrayList<>();
OrderChildLog log = null;
for(String string :childNos){
log = new OrderChildLog();
log.setChildNo(string);
log.setType(OrderChildLogEnum.Type.OWNER_CANCEL.getCode());
log.setRemark(OrderChildLogEnum.Type.OWNER_CANCEL.getMsg());
log.setCreateBy(param.getCreateBy());
log.setCreateName(param.getCreateName());
logs.add(log);
}
orderChildLogService.saveBatchOrderChildLog(logs);
}
}
}
} }
...@@ -47,4 +47,9 @@ public class OrderGoodsLogServiceImpl implements OrderGoodsLogService { ...@@ -47,4 +47,9 @@ public class OrderGoodsLogServiceImpl implements OrderGoodsLogService {
result.setRecords(orderGoodsLogVOS); result.setRecords(orderGoodsLogVOS);
return result; return result;
} }
@Override
public void saveBatchLog(List<OrderGoodsLog> logs) {
orderGoodsLogDao.saveBatchList(logs);
}
} }
...@@ -27,6 +27,7 @@ import com.clx.performance.extranal.user.DriverService; ...@@ -27,6 +27,7 @@ import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.model.*; import com.clx.performance.model.*;
import com.clx.performance.param.app.AppGoodsOrderSearchParam; import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.app.OrderGoodsListPageParam; import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.feign.DistributionTruckParam; import com.clx.performance.param.feign.DistributionTruckParam;
import com.clx.performance.param.pc.*; import com.clx.performance.param.pc.*;
import com.clx.performance.service.IntegralMqService; import com.clx.performance.service.IntegralMqService;
...@@ -1002,4 +1003,31 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -1002,4 +1003,31 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void cancelOrderGoods(CancelOrderGoodsParam param) {
log.info("取消货单:{}",param);
//取消货单
orderGoodsDao.cancelOrderGoods(param.getOrderNo());
//批量保存货单日志
List<OrderGoods> orderGoodsListByOrderNo = orderGoodsDao.getOrderGoodsListByOrderNo(param.getOrderNo());
log.info("orderGoodsListByOrderNo:{}",orderGoodsListByOrderNo);
List<OrderGoodsLog> orderGoodsLogs = new ArrayList<>();
OrderGoodsLog orderGoodsLog = null;
for(OrderGoods orderGoods:orderGoodsListByOrderNo){
orderGoodsLog = new OrderGoodsLog();
orderGoodsLog.setOrderGoodsNo(orderGoods.getOrderGoodsNo());
orderGoodsLog.setCreateName(param.getCreateName());
orderGoodsLog.setType(OrderGoodsLogsEnum.Type.CANCEL.getName());
orderGoodsLog.setCreateBy(param.getCreateBy());
orderGoodsLog.setRemark("货主发起减吨请求,当前已挂单量超过总拉运量,自动取消");
orderGoodsLogs.add(orderGoodsLog);
}
orderGoodsLogService.saveBatchLog(orderGoodsLogs);
}
} }
package com.clx.performance.strategy; package com.clx.performance.strategy;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.performance.param.pc.OrderGoodsChildParams;
import com.clx.performance.param.pc.OrderGoodsParams;
import com.clx.order.enums.OrderStopEnum; import com.clx.order.enums.OrderStopEnum;
import com.clx.order.enums.ResultEnum; import com.clx.order.enums.ResultEnum;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsTruckBindDao; import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.model.OrderGoodsTruckBind; import com.clx.performance.model.OrderGoodsTruckBind;
import com.clx.performance.param.pc.OrderGoodsChildParams;
import com.clx.performance.param.pc.OrderGoodsParams;
import com.clx.performance.utils.SpringContextUtils; import com.clx.performance.utils.SpringContextUtils;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.common.utils.DateUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
...@@ -85,7 +83,7 @@ public abstract class GoodsOrderStrategy { ...@@ -85,7 +83,7 @@ public abstract class GoodsOrderStrategy {
//根据不同的订单类型创建不同的货单 //根据不同的订单类型创建不同的货单
LocalDateTime sendLazyTime = goodsOrderProcess(orderGoodsParams, orderInfo, now); LocalDateTime sendLazyTime = goodsOrderProcess(orderGoodsParams, orderInfo, now);
Message message = MessageBuilder.withBody(orderNo.getBytes()).build(); /* Message message = MessageBuilder.withBody(orderNo.getBytes()).build();
BigDecimal epochMilli = null; BigDecimal epochMilli = null;
if (sendLazyTime.isAfter(now)) { if (sendLazyTime.isAfter(now)) {
epochMilli = new BigDecimal(sendLazyTime.minusMinutes(now.getMinute()).getMinute() * 60 * 1000); epochMilli = new BigDecimal(sendLazyTime.minusMinutes(now.getMinute()).getMinute() * 60 * 1000);
...@@ -107,6 +105,6 @@ public abstract class GoodsOrderStrategy { ...@@ -107,6 +105,6 @@ public abstract class GoodsOrderStrategy {
rabbitTemplate.send( rabbitTemplate.send(
RabbitKeyConstants.ORDER_ON_EXCHANGE, RabbitKeyConstants.ORDER_ON_ROUTE_KEY, message RabbitKeyConstants.ORDER_ON_EXCHANGE, RabbitKeyConstants.ORDER_ON_ROUTE_KEY, message
); );
} }*/
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论