提交 3cf27bb4 authored 作者: huyufan's avatar huyufan

逆向

上级 491f2cc4
package com.clx.performance.param.mq;
import lombok.Data;
@Data
public class OrderCancelMqParam {
private String orderNo;
// 1:平台 2:货主
private String type;
}
......@@ -96,13 +96,10 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
}
OrderGoods orderGoods = optional.get();
List<OrderChild> orderChildren = orderChildDao.selectInTransitOrderChild(orderGoodsNo);
if (CollectionUtil.isEmpty(orderChildren)) {
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) == 0) {
//更新货单已完成
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.SUCCESS.getCode());
} else {
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderGoods.getOrderNo());
param.setResidueWeight(orderGoods.getResidueTransportWeight());
......@@ -122,12 +119,8 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
orderFeign.rollbackOrderWeight(param);
//更新已完结,并设置剩余吨数为0
orderGoodsDao.updateOrderGoodsStatusAndRollbackResidueWeightByOrderGoodsNo(orderGoods.getId(), OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
log.info("删除redis ORDER_GOODS_STATUS_LAZY id: {}", orderGoodsId.getValue());
} else {
log.info("当前还存在正在拉运的运单,推测一天再进行逻辑处理");
expireProduceByLastOrderTime(LocalDateTime.now().plusDays(1), orderGoodsNo);
}
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoodsNo, OrderGoodsTruckBindEnum.Status.EXPIRE.getCode());
goodsOrderTruckRecordComponent.deleteTruckRecord(orderGoodsNo);
......@@ -184,7 +177,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
childSum.add(orderChild.getWeight());
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.OWNER_CANCEL.getCode());
update.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao.updateEntityByKey(update);
}
......
......@@ -133,9 +133,22 @@ public class GoodsOrderController {
@ApiOperation(value = "取消订单获取弹窗样式", notes = "<br>By:胡宇帆")
@GetMapping("/orderCancel")
public Result<String> orderCancel(@RequestParam(value = "orderNo") String orderNo) {
return Result.ok(orderGoodsService.orderCancel(orderNo));
@GetMapping("/orderCancelStyle")
public Result<String> orderCancelStyle(@RequestParam(value = "orderNo") String orderNo) {
return Result.ok(orderGoodsService.orderCancelStyle(orderNo));
}
@ApiOperation(value = "取消货单获取弹窗样式", notes = "<br>By:胡宇帆")
@GetMapping("/orderGoodsCancelStyle")
public Result<String> orderGoodsCancelStyle(@RequestParam(value = "orderGoodsNo") String orderGoodsNo) {
return Result.ok(orderGoodsService.orderGoodsCancelStyle(orderGoodsNo));
}
@ApiOperation(value = "取消货单", notes = "<br>By:胡宇帆")
@GetMapping("/orderGoodsCancel")
public Result<Object> orderGoodsCancel(@RequestParam(value = "orderGoodsNo") String orderGoodsNo) {
orderGoodsService.orderGoodsCancel(orderGoodsNo);
return Result.ok();
}
@ApiOperation(value = "获取当前订单可取消吨数", notes = "<br>By:胡宇帆")
......
......@@ -63,6 +63,8 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> getOrderChildBussInfo(String truckNo);
List<OrderChild> selectListByOrderGoodsNo(String orderGoodsNo);
Page<OrderChild> pageOrderChild(PageMonitorOrderChildQCParam param);
List<OrderChild> listOrderChild(List<Integer> status);
......@@ -78,7 +80,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
@Param("list")List<String> orderGoodsNoList
);
List<OrderChild> selectResidueWeight(String orderNo);
List<OrderChild> selectResidueWeight(String orderNo,Integer status);
/**
* 查询在途运单
......
package com.clx.performance.dao.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -259,9 +260,9 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
}
@Override
public List<OrderChild> selectResidueWeight(String orderNo) {
public List<OrderChild> selectResidueWeight(String orderNo, Integer status) {
return baseMapper.selectList(lQrWrapper().eq(OrderChild::getOrderNo,orderNo)
.lt(OrderChild::getStatus, OrderChildEnum.Status.ARRIVE_SEND.getCode())
.lt(ObjectUtil.isNotEmpty(status),OrderChild::getStatus, status)
);
}
......@@ -298,4 +299,12 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
return baseMapper.selectList(query);
}
@Override
public List<OrderChild> selectListByOrderGoodsNo(String orderGoodsNo) {
//查询小于 100(完成)的运单都属于在途
return baseMapper.selectList(lQrWrapper().eq(OrderChild::getOrderGoodsNo, orderGoodsNo)
.notIn(OrderChild::getStatus, OrderChildEnum.Status.DRIVER_CANCEL.getCode(),OrderChildEnum.Status.PLATFORM_CANCEL.getCode(),OrderChildEnum.Status.OWNER_CANCEL.getCode())
);
}
}
package com.clx.performance.listener;
import cn.hutool.json.JSONUtil;
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.param.mq.OrderCancelMqParam;
import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.OrderCancelService;
import com.msl.common.base.Optional;
......@@ -23,12 +25,19 @@ public class OrderCancelHandler {
@Autowired
private OrderCancelService orderCancelService;
@RabbitListener(queues = RabbitKeyConstants.ORDER_GOODS_ON_DEAD_QUEUE)
@RabbitListener(queues = RabbitKeyConstants.ORDER_CANCEL_QUEUE)
public void onMessage(String message) {
log.info("处理订单取消监听器执行,订单No为{}", message);
if (StringUtils.isBlank(message)) {
return;
OrderCancelMqParam param = JSONUtil.toBean(message, OrderCancelMqParam.class);
if (StringUtils.equals(param.getType(), "1")) {
orderCancelService.platformCancelOrder(param.getOrderNo());
} else {
orderCancelService.ownerCancelOrder(param.getOrderNo());
}
orderCancelService.ownerCancelOrder(message);
return;
// if (StringUtils.isBlank(message)) {
// return;
// }
// orderCancelService.ownerCancelOrder(message);
}
}
......@@ -86,7 +86,7 @@ public class OrderChild implements HasKey<Integer> {
private LocalDateTime expectSendTime; //预计到达货源地时间
private LocalDateTime expectReceiveTime; //预计到达目的地时间
private String settlementAccountPeriod; //结算账期 1拉运完成结 2月结
private Integer settlementAccountPeriod; //结算账期 1拉运完成结 2月结
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
......
......@@ -2,6 +2,10 @@ package com.clx.performance.service;
public interface OrderCancelService {
void platformCancelOrderPre(String orderNo);
void platformCancelOrder(String orderNo);
void ownerCancelOrderPre(String orderNo);
void ownerCancelOrder(String orderNo);
......
......@@ -10,7 +10,6 @@ import com.clx.performance.param.pc.UpdateOrderGoodsPriceParam;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.result.Result;
import java.math.BigDecimal;
import java.time.LocalDateTime;
......@@ -37,7 +36,12 @@ public interface OrderGoodsService {
List<OrderGoods> getOrderGoodsList(String orderNo, LocalDateTime lastArriveSendTime);
String orderCancel(String orderNo);
/**
* 获取订单取消的时候订单样式
* @param orderNo
* @return
*/
String orderCancelStyle(String orderNo);
BigDecimal orderCancelResidueWeight(String orderNo,String optionType);
......@@ -46,4 +50,17 @@ public interface OrderGoodsService {
void updateOrderGoodsPrice(UpdateOrderGoodsPriceParam param);
Boolean updateOrderGoodsStopFlag(String orderNo,Integer stopFlag);
/**
* 获取货单取消的时候弹窗样式
* @param orderGoodsNo
* @return
*/
String orderGoodsCancelStyle(String orderGoodsNo);
/**
* 取消货单
* @param orderGoodsNo
*/
void orderGoodsCancel(String orderGoodsNo);
}
package com.clx.performance.service.impl;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.RollbackOrderWeightParam;
import com.clx.order.params.PageOrderGoodsListParam;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsDriverTruckDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderGoodsLogsEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.TruckDemandEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsDriverTruck;
......@@ -170,7 +175,7 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
}
@Override
public String orderCancel(String orderNo) {
public String orderCancelStyle(String orderNo) {
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
Integer orderStatus = orderInfoFeign.getOrderStatus();
......@@ -213,11 +218,11 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
public BigDecimal orderCancelResidueWeight(String orderNo, String optionType) {
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
if (StringUtils.equals(optionType,"1")) {
if (StringUtils.equals(optionType, "1")) {
return new BigDecimal(orderInfoFeign.getResidueWeight());
} else {
String residueWeight = orderInfoFeign.getResidueWeight();
List<OrderChild> orderChildList = orderChildDao.selectResidueWeight(orderNo);
List<OrderChild> orderChildList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
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();
......@@ -235,18 +240,61 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
@Transactional(rollbackFor = Exception.class)
@Override
public void updateOrderGoodsPrice(UpdateOrderGoodsPriceParam param) {
OrderGoods orderGoods= orderGoodsDao.getEntityByKey(param.getId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
OrderGoods orderGoods = orderGoodsDao.getEntityByKey(param.getId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
BigDecimal oldPendingOrderFreight = orderGoods.getPendingOrderFreight().divide(new BigDecimal("100"));
orderGoodsDao.updatePendingOrderFreightById(param.getId(),param.getPendingOrderFreight());
orderGoodsDao.updatePendingOrderFreightById(param.getId(), param.getPendingOrderFreight());
BigDecimal newPendingOrderFreight = param.getPendingOrderFreight().divide(new BigDecimal("100"));
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
//记录货单调价日志
orderGoodsLogService.saveLog(orderGoods.getOrderGoodsNo(),loginUserInfo.getUserNo(),loginUserInfo.getUserName(),
OrderGoodsLogsEnum.Type.ADJUST_PRICE.getName(),String.format("调价前%s元,调价后%s元",oldPendingOrderFreight,newPendingOrderFreight) );
orderGoodsLogService.saveLog(orderGoods.getOrderGoodsNo(), loginUserInfo.getUserNo(), loginUserInfo.getUserName(),
OrderGoodsLogsEnum.Type.ADJUST_PRICE.getName(), String.format("调价前%s元,调价后%s元", oldPendingOrderFreight, newPendingOrderFreight));
}
@Override
public Boolean updateOrderGoodsStopFlag(String orderNo,Integer stopFlag) {
return orderGoodsDao.updateStopFlagByOrderNo(orderNo,stopFlag);
public Boolean updateOrderGoodsStopFlag(String orderNo, Integer stopFlag) {
return orderGoodsDao.updateStopFlagByOrderNo(orderNo, stopFlag);
}
@Override
public String orderGoodsCancelStyle(String orderGoodsNo) {
List<OrderChild> orderChildren = orderChildDao.selectListByOrderGoodsNo(orderGoodsNo);
if (CollectionUtils.isNotEmpty(orderChildren)) {
return "selectTruck";
} else {
return "onlyRemark";
}
}
@Override
public void orderGoodsCancel(String orderGoodsNo) {
Optional<OrderGoods> optional = orderGoodsDao.getByOrderGoodsNo(orderGoodsNo);
if (!optional.isPresent()) {
return;
}
OrderGoods orderGoods = optional.get();
List<OrderChild> orderChildList = orderChildDao.selectResidueWeight(orderGoods.getOrderGoodsNo(), OrderChildEnum.Status.ARRIVE_SEND.getCode());
BigDecimal sum = BigDecimal.ZERO;
if (CollectionUtils.isNotEmpty(orderChildList)) {
sum = orderChildList.stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
}
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
BigDecimal residueWeight = orderGoods.getResidueTransportWeight().add(sum);
param.setResidueWeight(residueWeight);
param.setOrderNo(orderGoods.getOrderNo());
if (!orderGoods.getTruckDemand().equals(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode())) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
} else {
if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.PLATFORM.getCode())) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(residueWeight);
} else if (orderGoods.getVehicleUsage().equals(VehicleUsageEnum.Status.OWN.getCode())) {
param.setOwnResidueCarryWeight(residueWeight);
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
}
}
log.info("取消货单,参数:{}", JSONUtil.parse(param));
orderFeign.rollbackOrderWeight(param);
}
}
package com.clx.performance;
import cn.hutool.json.JSONUtil;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.OrderOwnTruckVo;
import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.component.OrderGoodsStatusLazyComponent;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.param.mq.OrderCancelMqParam;
import com.clx.performance.service.OrderCancelService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
......@@ -46,11 +51,19 @@ public class JobTest {
@Test
public void test1() {
OrderCancelMqParam mqParam = new OrderCancelMqParam();
mqParam.setType("2");
mqParam.setOrderNo("123");
Message message = MessageBuilder.withBody(JSONUtil.parse(mqParam).toString().getBytes()).build();
rabbitTemplate.send(
RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
);
//CX2023092600223 平台已承接的订单,没有产生货单
//CX2023101600386 truckDemand 类型是2,且有货单,有运单, 没有未到达货源地的运单
//PT2023092600207 类型都是1,且有运单
//orderCancelService.ownerCancelOrderPre("PT2023102600466");
orderCancelService.ownerCancelOrder("PT2023102600466");
//orderCancelService.ownerCancelOrderPre("PT2023102700469");
//orderCancelService.ownerCancelOrder("PT2023102600466");
System.out.println();
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论