提交 9f485b7c authored 作者: liruixin's avatar liruixin

Merge remote-tracking branch 'origin/v5.7_break_contract_reverse_20231020' into…

Merge remote-tracking branch 'origin/v5.7_break_contract_reverse_20231020' into v5.7_break_contract_reverse_20231020
package com.clx.performance.feign;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.vo.feign.OrderGoodsFeignVO;
import com.msl.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank;
......@@ -49,4 +52,9 @@ public interface PerformanceFeign {
Result<List<String>> getPrivateTruckList(@RequestParam("orderGoodsNo") @NotBlank(message = "货单编号不可为空") String orderGoodsNo,
@RequestParam("userNo") @NotNull(message = "用户编号不可为空") Long userNo);
@PostMapping(value = {"clx-performance/feign/order/orderCancel"})
Result<Object> orderCancel(@RequestBody OrderCancelParam param);
}
package com.clx.performance.param.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
@Getter
@Setter
public class OrderCancelParam {
@NotNull(message = "订单编号不能为空")
@ApiModelProperty("订单编号")
private String orderNo;
}
package com.clx.performance.param.pc;
import com.msl.common.base.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
/**
* @ClassName OrderGoodsLogParam
* @Description
* @Author kavin
* @Date 2023/10/26 16:18
* @Version 1.0
*/
@Getter
@Setter
public class OrderGoodsLogParam extends PageParam {
@NotBlank(message = "货单编号不能为空")
@ApiModelProperty("货单编号")
private String orderGoodsNo;
}
package com.clx.performance.vo.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName OrderGoodsLogVO
* @Description
* @Author kavin
* @Date 2023/10/26 16:11
* @Version 1.0
*/
@Getter
@Setter
public class OrderGoodsLogVO {
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("货单编码")
private String orderGoodsNo;
@ApiModelProperty("操作人ID")
private Long createBy;
@ApiModelProperty("操作人名称")
private String createName;
@ApiModelProperty("操作类型")
private String type;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("创建时间")
private String createTime;
}
......@@ -144,4 +144,30 @@ public class RabbitBeanConfig {
public Binding orderGoodsDeadExchangeBind() {
return BindingBuilder.bind(orderGoodsOnDeadQueue()).to(orderGoodsOnDeadExchange()).with(RabbitKeyConstants.ORDER_GOODS_ON_DEAD_ROUTE_KEY);
}
/**
* 订单取消队列
* @return
*/
@Bean
public Queue orderCancelQueue() {
return new Queue(RabbitKeyConstants.ORDER_CANCEL_QUEUE, true, false, false);
}
/**
* 订单取消队列交换机
**/
@Bean
public DirectExchange orderCancelExchange() {
return new DirectExchange(RabbitKeyConstants.ORDER_CANCEL_EXCHANGE);
}
/**
* 订单取消队列绑定
*/
@Bean
public Binding orderCancelExchangeBind() {
return BindingBuilder.bind(orderCancelQueue()).to(orderCancelExchange()).with(RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY);
}
}
......@@ -52,4 +52,10 @@ public class RabbitKeyConstants {
public static final String ORDER_GOODS_ON_DEAD_ROUTE_KEY ="clx-order.order.goods.on.dead.route.key";
public static final String ORDER_CANCEL_QUEUE ="clx-order.order.cancel.queue";
public static final String ORDER_CANCEL_EXCHANGE ="clx-order.order.cancel.exchange";
public static final String ORDER_CANCEL_ROUTE_KEY ="clx-order.order.cancel.route.key";
}
package com.clx.performance.controller.feign;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.service.OrderCancelService;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping("/feign/order")
@Validated
@AllArgsConstructor
@Api(tags = "PC-订单取消")
public class OrderCancelFeignController {
private final OrderCancelService orderCancelService;
@ApiOperation(value = "查看货单列表", notes = "<br>By:胡宇帆")
@PostMapping("/orderCancel")
public Result<Object> orderCancel(@RequestBody OrderCancelParam param) {
orderCancelService.ownerCancelOrderPre(param.getOrderNo());
return Result.ok();
}
}
package com.clx.performance.controller.pc;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.OrderGoodsLogParam;
import com.clx.performance.service.OrderGoodsLogService;
import com.clx.performance.vo.pc.OrderGoodsLogVO;
import com.msl.common.base.PageData;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName GoodsOrderController
* @Description
* @Author kavin
* @Date 2023/9/17 17:16
* @Version 1.0
*/
@Slf4j
@RestController
@RequestMapping("/pc/goodsOrderLog")
@Validated
@AllArgsConstructor
@Api(tags = "PC-货单日志")
public class OrderGoodsLogController {
OrderGoodsLogService orderGoodsLogService;
@ApiOperation(value = "货单日志列表", notes = "<br>By:刘海泉")
@PostMapping("/pageOrderGoodsList")
public Result<PageData<OrderGoodsLogVO>> pageOrderGoodsLog(@RequestParam @Validated OrderGoodsLogParam param) {
IPage<OrderGoodsLogVO> page = orderGoodsLogService.pageOrderGoodsLog(param);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
}
package com.clx.performance.dao;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.mapper.OrderGoodsLogMapper;
import com.clx.performance.model.OrderGoodsLog;
import com.msl.common.dao.BaseDao;
......@@ -10,4 +11,5 @@ import com.msl.common.dao.BaseDao;
* Time 11:27
*/
public interface OrderGoodsLogDao extends BaseDao<OrderGoodsLogMapper, OrderGoodsLog, Integer> {
Page<OrderGoodsLog> pageOrderGoodsLog(Page page, String orderGoodsNo);
}
......@@ -260,7 +260,7 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
@Override
public List<OrderChild> selectResidueWeight(String orderNo) {
return baseMapper.selectList(lambdaQuery().eq(OrderChild::getOrderNo,orderNo)
return baseMapper.selectList(lQrWrapper().eq(OrderChild::getOrderNo,orderNo)
.lt(OrderChild::getStatus, OrderChildEnum.Status.ARRIVE_SEND.getCode())
);
}
......
package com.clx.performance.dao.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderGoodsLogDao;
import com.clx.performance.mapper.OrderGoodsLogMapper;
import com.clx.performance.model.OrderGoodsLog;
......@@ -13,4 +15,11 @@ import org.springframework.stereotype.Repository;
*/
@Repository
public class OrderGoodsLogDaoImpl extends BaseDaoImpl<OrderGoodsLogMapper, OrderGoodsLog, Integer> implements OrderGoodsLogDao {
@Override
public Page<OrderGoodsLog> pageOrderGoodsLog(Page page, String orderGoodsNo) {
LambdaQueryWrapper<OrderGoodsLog> query = new LambdaQueryWrapper();
query.eq(OrderGoodsLog :: getOrderGoodsNo,orderGoodsNo);
query.orderByDesc(OrderGoodsLog :: getCreateTime);
return baseMapper.selectPage(page,query);
}
}
package com.clx.performance.listener;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.OrderCancelService;
import com.msl.common.base.Optional;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 处理货单取消吨数回填
*/
@Slf4j
@Component
public class OrderCancelHandler {
@Autowired
private OrderCancelService orderCancelService;
@RabbitListener(queues = RabbitKeyConstants.ORDER_GOODS_ON_DEAD_QUEUE)
public void onMessage(String message) {
log.info("处理订单取消监听器执行,订单No为{}", message);
if (StringUtils.isBlank(message)) {
return;
}
orderCancelService.ownerCancelOrder(message);
}
}
package com.clx.performance.service;
public interface OrderCancelService {
void ownerCancelOrderPre(String orderNo);
void ownerCancelOrder(String orderNo);
}
package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.OrderGoodsLogParam;
import com.clx.performance.vo.pc.OrderGoodsLogVO;
/**
* @author kavin
* Date 2023-10-26
......@@ -7,4 +11,6 @@ package com.clx.performance.service;
*/
public interface OrderGoodsLogService {
void saveLog(String orderGoodsNo,Long userNo,String userName,String type,String remark);
IPage<OrderGoodsLogVO> pageOrderGoodsLog(OrderGoodsLogParam param);
}
......@@ -5,6 +5,7 @@ import com.clx.order.enums.OrderEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.UpdateOrderInfoResidueWeightParam;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.enums.OrderChildEnum;
......@@ -16,6 +17,9 @@ import com.clx.performance.service.OrderCancelService;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -37,7 +41,10 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private final OrderGoodsDao orderGoodsDao;
private final RabbitTemplate rabbitTemplate;
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerCancelOrderPre(String orderNo) {
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
......@@ -87,11 +94,18 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
}
}
log.info("执行订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
Message message = MessageBuilder.withBody(orderNo.getBytes()).build();
rabbitTemplate.send(
RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerCancelOrder(String orderNo) {
log.info("开始执行订单取消吨数回填");
FeignOrderVO orderInfoFeignVO = orderFeign.getOrderInfoFeign(orderNo);
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
......
package com.clx.performance.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderGoodsLogDao;
import com.clx.performance.model.OrderGoodsLog;
import com.clx.performance.param.pc.OrderGoodsLogParam;
import com.clx.performance.service.OrderGoodsLogService;
import com.clx.performance.vo.pc.OrderGoodsLogVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
......@@ -27,4 +31,10 @@ public class OrderGoodsLogServiceImpl implements OrderGoodsLogService {
orderGoodsLogDao.saveEntity(log);
}
@Override
public IPage<OrderGoodsLogVO> pageOrderGoodsLog(OrderGoodsLogParam param) {
Page<OrderGoodsLog> page = orderGoodsLogDao.pageOrderGoodsLog(Page.of(param.getPage(), param.getPageSize()),param.getOrderGoodsNo());
return null;
}
}
......@@ -218,7 +218,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
} else {
String residueWeight = orderInfoFeign.getResidueWeight();
List<OrderChild> orderChildList = orderChildDao.selectResidueWeight(orderNo);
BigDecimal childResidueWeight = orderChildList.stream().map(OrderChild::getWeight).reduce(BigDecimal::add).get();
BigDecimal childResidueWeight = orderChildList.stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal orderGoodsResidueWeight = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo).stream().map(OrderGoods::getResidueTransportWeight).reduce(BigDecimal::add).get();
return childResidueWeight.add(new BigDecimal(residueWeight)).add(orderGoodsResidueWeight);
......
......@@ -5,6 +5,7 @@ import com.clx.order.vo.feign.OrderOwnTruckVo;
import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.component.OrderGoodsStatusLazyComponent;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.service.OrderCancelService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
......@@ -40,13 +41,16 @@ public class JobTest {
@Autowired
private GoodsOrderTruckRecordComponent recordComponent;
@Autowired
private OrderCancelService orderCancelService;
@Test
public void test1() {
List<String> list = new ArrayList<>();
list.add("晋A99999");
recordComponent.saveTruckRecord("123", list);
recordComponent.getPrivateTruckList("123", 1001183036834771013L);
//CX2023092600223 平台已承接的订单,没有产生货单
//CX2023101600386 truckDemand 类型是2,且有货单,有运单, 没有未到达货源地的运单
//PT2023092600207 类型都是1,且有运单
//orderCancelService.ownerCancelOrderPre("PT2023102600466");
orderCancelService.ownerCancelOrder("PT2023102600466");
System.out.println();
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论