提交 5185d8ec authored 作者: huyufan's avatar huyufan

订单逆向

上级 9568b75c
package com.clx.performance.param.pc;
import com.clx.order.params.OrderGoodsChildParams;
import com.msl.common.convertor.field.Converted;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* @ClassName UpdateEditOrderGoodsParam
* @Description
......@@ -13,60 +20,12 @@ import lombok.Setter;
@Getter
@Setter
public class UpdateEditOrderGoodsParam {
// @ApiModelProperty("货单id")
// private Integer id;
//
// @ApiModelProperty("提取方式 1提取全部 2提取部分")
// private Integer extractWay;
//
// @ApiModelProperty("提取吨数")
// private BigDecimal extractWeight;
//
// @ApiModelProperty("需要车辆/辆")
// private Integer needTruckNum;
//
//
// @ApiModelProperty("挂单方式 1公开派单 2定向派单")
// private Integer pendingOrderWay;
//
//
// @ApiModelProperty("用车方式 1:平台车辆配货 2:自有车辆配货")
// private String vehicleUsage;
//
//
//
//
//
//
//
//
//
//
// @ApiModelProperty(value = "最晚到达货源地时间/运单的最晚装货时间", example = "2023-09-09 12:00:01", required = true)
// private String lastArriveSendTime;
//
//
//
//
// @ApiModelProperty("高级物流经理id")
// private Integer seniorLogisticsManagerId;
//
// @ApiModelProperty("高级物流经理姓名")
// private String seniorLogisticsManagerName;
//
//
// @ApiModelProperty(value = "挂单时间", example = "2023-09-09 12:00:01", required = true)
// private String pendingOrderTime;
//
//
// @MoneyInConvert
// @ApiModelProperty("挂单运费")
// private BigDecimal pendingOrderFreight;
//
//
//
//
// @ApiModelProperty("车辆列表")
// private List<String> truckList;
@ApiModelProperty("订单编号")
@NotBlank(message = "订单编号不能为空")
private String orderNo;
@Valid
@Converted(isDynamic = true)
private List<OrderGoodsChildParams> orderGoodsChildParams;
}
package com.clx.performance.vo.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class OrderGoodsEditVO {
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("拉运吨数")
private String transportWeight;
@ApiModelProperty("有效运费")
private BigDecimal validFreightPrice;
@ApiModelProperty("用车需求: 1平台车辆 2部分平台车辆 3自有车辆")
private Integer truckDemand;
@ApiModelProperty("剩余拉运吨数")
private String residueWeight;
@ApiModelProperty("自有承运吨数")
private String ownCarryWeight;
@ApiModelProperty("自有承运剩余吨数")
private String ownResidueCarryWeight;
@ApiModelProperty("平台承运吨数")
private String platformCarryWeight;
@ApiModelProperty("平台剩余承运吨数")
private String platformResidueCarryWeight;
@ApiModelProperty("向下浮动量(吨)")
private String downFloatWeight;
@ApiModelProperty("向上浮动量(吨)")
private String upFloatWeight;
@ApiModelProperty("是否暂停 0:否 1:是")
private Integer stopFlag;
@ApiModelProperty("结算账期 1拉运完成结 2月结")
private Integer settlementAccountPeriod;
@ApiModelProperty("1:可以全部编辑 0:不能全部编辑")
private boolean editAllFlag;
private List<OrderGoodsVO> orderGoodsVOList;
}
......@@ -7,6 +7,7 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
......@@ -112,5 +113,18 @@ public class OrderGoodsVO {
@ApiModelProperty("车辆列表")
private List<String> truckList;
@ApiModelProperty("批次号")
private String batchNumber;
@ApiModelProperty("'最晚到达目的地时间'")
private String lastArriveReceiveTime;
@ApiModelProperty("最晚装货时间")
private String lastLoadTime;
@ApiModelProperty("'最晚接单时间'")
private String lastOrderTime;
@ApiModelProperty("'是否可编辑全部字段'")
private boolean editAllFlg;
}
\ No newline at end of file
......@@ -29,11 +29,12 @@ public class OrderCancelFeignController {
@ApiOperation(value = "货主端订单取消", notes = "<br>By:胡宇帆")
@PostMapping("/orderCancel")
public Result<Object> orderCancel(@RequestBody OrderCancelFeignParam param) {
OrderCancelParam cancelParam = new OrderCancelParam();
cancelParam.setOrderNo(param.getOrderNo());
cancelParam.setCancelType(3);
cancelParam.setCreateByType(1);
orderCancelService.platformCancelOrderPrePC(cancelParam);
// OrderCancelParam cancelParam = new OrderCancelParam();
// cancelParam.setOrderNo(param.getOrderNo());
// cancelParam.setCancelType(3);
// cancelParam.setCreateByType(1);
// orderCancelService.platformCancelOrderPrePC(cancelParam);
orderCancelService.ownerCancelOrderPre(param.getOrderNo());
return Result.ok();
}
}
......@@ -14,6 +14,7 @@ import com.clx.performance.param.pc.UpdateOrderGoodsPriceParam;
import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.vo.pc.OrderChildPCVO;
import com.clx.performance.vo.pc.OrderGoodsEditVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert;
......@@ -127,15 +128,16 @@ public class GoodsOrderController {
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
@ApiOperation(value = "货单编辑查询", notes = "<br>By:胡宇帆")
@GetMapping("/findOrderGoodsByBatchNumber")
public Result<OrderGoodsVO> findOrderGoodsByBatchNumber(@RequestParam(value = "batch_number") Long batchNumber){
OrderGoodsVO orderGoodsVO = orderGoodsService.findOrderGoodsByBatchNumber(batchNumber);
public Result<OrderGoodsEditVO> findOrderGoodsByBatchNumber(@RequestParam(value = "batchNumber") Long batchNumber){
OrderGoodsEditVO orderGoodsVO = orderGoodsService.findOrderGoodsByBatchNumber(batchNumber);
return Result.ok(orderGoodsVO);
}
@ApiOperation(value = "货单编辑", notes = "<br>By:刘海泉")
@ApiOperation(value = "货单编辑提交", notes = "<br>By:刘海泉")
@PostMapping("/updateEditOrderGoods")
public Result updateEditOrderGoods(@RequestBody @Validated UpdateEditOrderGoodsParam param) {
public Result<Object> updateEditOrderGoods(@RequestBody @Validated UpdateEditOrderGoodsParam param) {
orderGoodsService.updateEditOrderGoods(param);
return Result.ok();
}
......
......@@ -97,4 +97,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
void batchUpdateOrderChildStatus(Integer status, List<Integer> ids);
List<OrderChild> selectOrderChildListByOrderGoodsNoAndStatusGE(String orderGoodsNo, Integer status);
List<OrderChild> selectListByOrderGoodsList(List<String> orderGoodsList);
}
......@@ -63,5 +63,5 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
Integer updateOrderGoodsSetResidueWeight(BigDecimal residueWeight, Integer id);
OrderGoodsVO findOrderGoodsByBatchNumber(Long batchNumber);
List<OrderGoodsVO> findOrderGoodsByBatchNumber(Long batchNumber);
}
......@@ -301,6 +301,11 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.ge(ObjectUtil.isNotNull(status),OrderChild::getStatus, status)
); }
@Override
public List<OrderChild> selectListByOrderGoodsList(List<String> orderGoodsList) {
return baseMapper.selectList(lQrWrapper().in(OrderChild::getOrderGoodsNo, orderGoodsList));
}
@Override
public List<OrderChild> getOrderChildByOrderNo(String orderNo) {
LambdaQueryWrapper<OrderChild> query = new LambdaQueryWrapper();
......
......@@ -169,7 +169,7 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
}
@Override
public OrderGoodsVO findOrderGoodsByBatchNumber(Long batchNumber) {
public List<OrderGoodsVO> findOrderGoodsByBatchNumber(Long batchNumber) {
return baseMapper.findOrderGoodsByBatchNumber(batchNumber);
}
......
......@@ -60,5 +60,6 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@UpdateProvider(type = OrderGoodsSqlProvider.class, method = "updateOrderGoodsSetResidueWeight")
Integer updateOrderGoodsSetResidueWeight(@Param(value = "residueWeight") BigDecimal residueWeight, @Param(value = "id") Integer id);
OrderGoodsVO findOrderGoodsByBatchNumber(Long batchNumber);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "findOrderGoodsByBatchNumber")
List<OrderGoodsVO> findOrderGoodsByBatchNumber(Long batchNumber);
}
......@@ -8,7 +8,7 @@ public interface OrderCancelService {
//
// void platformCancelOrder(String orderNo);
//
// void ownerCancelOrderPre(String orderNo);
void ownerCancelOrderPre(String orderNo);
//
// void ownerCancelOrder(String orderNo);
......
......@@ -10,6 +10,7 @@ import com.clx.performance.param.app.OrderGoodsListPageParam;
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.OrderGoodsEditVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import java.math.BigDecimal;
......@@ -79,5 +80,5 @@ public interface OrderGoodsService {
* @param batchNumber
* @return
*/
OrderGoodsVO findOrderGoodsByBatchNumber(Long batchNumber);
OrderGoodsEditVO findOrderGoodsByBatchNumber(Long batchNumber);
}
......@@ -15,6 +15,7 @@ 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.param.mq.OrderCancelMqParam;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.service.OrderCancelService;
import com.msl.common.exception.ServiceSystemException;
......@@ -301,87 +302,87 @@ public class OrderCancelServiceImpl implements OrderCancelService {
// }
//
//
// @Override
// @Transactional(rollbackFor = Exception.class)
// public void ownerCancelOrderPre(String orderNo) {
// //FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
//
// List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
// if (CollectionUtil.isEmpty(orderGoodsList)) {
// //未产生货单
// Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
// if (!result.succeed()) {
// throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
// }
// log.info("执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
// OrderCancelMqParam mqParam = new OrderCancelMqParam();
// mqParam.setType("2");
// mqParam.setOrderNo(orderNo);
// Message message = MessageBuilder.withBody(JSONUtil.parse(mqParam).toString().getBytes()).build();
// rabbitTemplate.send(
// RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
// );
// return;
// }
//
// List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, null);
//
// if (CollectionUtil.isEmpty(orderChildrenList)) {
// //说明此刻未产生运单
// Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
// if (!result.succeed()) {
// throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
// }
//
// for (OrderGoods orderGoods : orderGoodsList) {
// OrderGoods update = new OrderGoods();
// update.setId(orderGoods.getId());
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
// orderGoodsDao.updateEntityByKey(update);
// }
//
// } else {
//
// Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream()
// .collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
//
// for (OrderGoods orderGoods : orderGoodsList) {
// OrderGoods update = new OrderGoods();
// update.setId(orderGoods.getId());
// List<OrderChild> orderChildren = orderChildMap.get(orderGoods.getOrderGoodsNo());
// if (CollectionUtil.isEmpty(orderChildren)) {
// //没有运单,直接是取消
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
// } else {
// if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) != 0) {
// //货单还有余量,是已完结
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
// } else {
// List<OrderChild> orderChildrenListComplete = orderChildDao.selectOrderChildListByOrderGoodsNoAndStatusGE(orderGoods.getOrderGoodsNo(), OrderChildEnum.Status.ARRIVE_SEND.getCode());
// if (CollectionUtil.isNotEmpty(orderChildrenListComplete)) {
// //没有余量,需要判断已完成的运单量是不等于货单的全部提取量,等于则是已完成,否则是已完结
// BigDecimal reduce = orderChildrenListComplete.stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
// if (reduce.compareTo(orderGoods.getExtractWeight()) == 0) {
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.SUCCESS.getCode());
// } else {
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
// }
// } else {
// //虽然没有余量,但是可以取消的运单都是未到达货源地的
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
// }
//
// }
// }
// orderGoodsDao.updateEntityByKey(update);
// }
// Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.COMPLETED.getCode());
// if (!result.succeed()) {
// throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
// }
// }
//
// log.info("执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
@Override
@Transactional(rollbackFor = Exception.class)
public void ownerCancelOrderPre(String orderNo) {
//FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if (CollectionUtil.isEmpty(orderGoodsList)) {
//未产生货单
Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
}
log.info("执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
OrderCancelMqParam mqParam = new OrderCancelMqParam();
mqParam.setType("2");
mqParam.setOrderNo(orderNo);
Message message = MessageBuilder.withBody(JSONUtil.parse(mqParam).toString().getBytes()).build();
rabbitTemplate.send(
RabbitKeyConstants.ORDER_CANCEL_EXCHANGE, RabbitKeyConstants.ORDER_CANCEL_ROUTE_KEY, message
);
return;
}
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, null);
if (CollectionUtil.isEmpty(orderChildrenList)) {
//说明此刻未产生运单
Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
}
for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
orderGoodsDao.updateEntityByKey(update);
}
} else {
Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
List<OrderChild> orderChildren = orderChildMap.get(orderGoods.getOrderGoodsNo());
if (CollectionUtil.isEmpty(orderChildren)) {
//没有运单,直接是取消
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
} else {
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) != 0) {
//货单还有余量,是已完结
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
} else {
List<OrderChild> orderChildrenListComplete = orderChildDao.selectOrderChildListByOrderGoodsNoAndStatusGE(orderGoods.getOrderGoodsNo(), OrderChildEnum.Status.ARRIVE_SEND.getCode());
if (CollectionUtil.isNotEmpty(orderChildrenListComplete)) {
//没有余量,需要判断已完成的运单量是不等于货单的全部提取量,等于则是已完成,否则是已完结
BigDecimal reduce = orderChildrenListComplete.stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
if (reduce.compareTo(orderGoods.getExtractWeight()) == 0) {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.SUCCESS.getCode());
} else {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
}
} else {
//虽然没有余量,但是可以取消的运单都是未到达货源地的
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
}
}
}
orderGoodsDao.updateEntityByKey(update);
}
Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.COMPLETED.getCode());
if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
}
}
this.ownerCancelOrder(orderNo);
// log.info("执行货主订单取消前置:更改相关状态完毕,开始执行吨数回填,发送MQ消息,订单No {}", orderNo);
// OrderCancelMqParam mqParam = new OrderCancelMqParam();
// mqParam.setType("2");
// mqParam.setOrderNo(orderNo);
......@@ -389,168 +390,168 @@ public class OrderCancelServiceImpl implements OrderCancelService {
// 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);
// Map<Integer, BigDecimal> truckDemandMap = new HashMap<>();
// truckDemandMap.put(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode(), BigDecimal.ZERO);
// truckDemandMap.put(TruckDemandEnum.TruckType.OWNER_CAR.getCode(), BigDecimal.ZERO);
// if (!TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode().equals(orderInfoFeignVO.getTruckDemand())) {
// if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
// //已完结
// List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
//
// for (OrderChild orderChild : orderChildrenList) {
// OrderChild update = new OrderChild();
// update.setId(orderChild.getId());
// update.setStatus(OrderChildEnum.Status.OWNER_CANCEL.getCode());
// //TODO 补充批量更新接口 关闭运单状态
// orderChildDao.updateEntityByKey(update);
// }
// Map<String, List<OrderGoods>> orderGoodsMap = orderGoodsList.stream()
// .collect(Collectors.groupingBy(OrderGoods::getOrderGoodsNo));
//
// Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream()
// .collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
//
// for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) {
// String orderGoodsNo = entry.getKey();
// OrderGoods orderGoods = entry.getValue().get(0);
// List<OrderChild> orderChildren = orderChildMap.get(orderGoodsNo);
// BigDecimal sum = BigDecimal.ZERO;
// if (CollectionUtil.isNotEmpty(orderChildren)) {
// sum = orderChildren.stream()
// .map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
// }
// truckDemandMap.put(orderGoods.getTruckDemand(),
// truckDemandMap.get(orderGoods.getTruckDemand())
// .add(orderGoods.getResidueTransportWeight().add(sum)));
//
// OrderGoods update = new OrderGoods();
// update.setId(orderGoods.getId());
// //TODO 补充批量更新接口 关闭货单状态 注意判断货单是已完结还是已完成
// update.setResidueTransportWeight(BigDecimal.ZERO);
//// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
// orderGoodsDao.updateEntityByKey(update);
// }
//
// } else if (OrderEnum.Status.CANCELED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
// //已取消
// for (OrderGoods orderGoods : orderGoodsList) {
// truckDemandMap.put(orderGoods.getTruckDemand(),
// truckDemandMap.get(orderGoods.getTruckDemand())
// .add(orderGoods.getResidueTransportWeight()));
// OrderGoods update = new OrderGoods();
// update.setId(orderGoods.getId());
// //TODO 补充批量更新接口 关闭货单状态
// update.setResidueTransportWeight(BigDecimal.ZERO);
//// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
// orderGoodsDao.updateEntityByKey(update);
// }
// }
//
// Integer truckDemand = orderInfoFeignVO.getTruckDemand();
// BigDecimal residueWeight = truckDemandMap.get(truckDemand);
// if (residueWeight.compareTo(BigDecimal.ZERO) == 0) {
// log.info("当前订单对应的货单无需吨数回填,订单编号{}", orderNo);
// return;
// }
//
// //归还吨数
// RollbackOrderWeightParam param = new RollbackOrderWeightParam();
// param.setOrderNo(orderInfoFeignVO.getOrderNo());
// if (truckDemand.equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
// param.setResidueWeight(residueWeight);
// param.setOwnResidueCarryWeight(BigDecimal.ZERO);
// param.setPlatformResidueCarryWeight(residueWeight);
// }
// if (truckDemand.equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) {
// param.setResidueWeight(residueWeight);
// param.setOwnResidueCarryWeight(residueWeight);
// param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
// }
// orderFeign.rollbackOrderWeight(param);
//
// } else {
// Map<Integer, BigDecimal> vehicleUsageMap = new HashMap<>();
// vehicleUsageMap.put(1, BigDecimal.ZERO);
// vehicleUsageMap.put(2, BigDecimal.ZERO);
// if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
// //已完结
// List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
//
// for (OrderChild orderChild : orderChildrenList) {
// OrderChild update = new OrderChild();
// update.setId(orderChild.getId());
// update.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
// //TODO 补充批量更新接口 关闭运单状态
// orderChildDao.updateEntityByKey(update);
// }
// //货单
// Map<String, List<OrderGoods>> orderGoodsMap = orderGoodsList.stream()
// .collect(Collectors.groupingBy(OrderGoods::getOrderGoodsNo));
// //运单
// Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream()
// .collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
//
//
// for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) {
// String orderGoodsNo = entry.getKey();
// OrderGoods orderGoods = entry.getValue().get(0);
//
// BigDecimal sum = BigDecimal.ZERO;
// if (CollectionUtil.isNotEmpty(orderChildMap.get(orderGoodsNo))) {
// sum = orderChildMap.get(orderGoodsNo).stream()
// .map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
// }
// vehicleUsageMap.put(orderGoods.getVehicleUsage(),
// vehicleUsageMap.get(orderGoods.getVehicleUsage())
// .add(orderGoods.getResidueTransportWeight().add(sum)));
// OrderGoods update = new OrderGoods();
// update.setId(orderGoods.getId());
// //TODO 补充批量更新接口 关闭货单状态
// update.setResidueTransportWeight(BigDecimal.ZERO);
// //update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
// orderGoodsDao.updateEntityByKey(update);
//
// }
//
// } else if (OrderEnum.Status.CANCELED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
// //已取消
// for (OrderGoods orderGoods : orderGoodsList) {
// vehicleUsageMap.put(orderGoods.getVehicleUsage(),
// vehicleUsageMap.get(orderGoods.getVehicleUsage())
// .add(orderGoods.getResidueTransportWeight()));
// OrderGoods update = new OrderGoods();
// update.setId(orderGoods.getId());
// //TODO 补充批量更新接口 关闭货单状态
// update.setResidueTransportWeight(BigDecimal.ZERO);
// //update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
// orderGoodsDao.updateEntityByKey(update);
// }
// }
//
// //归还吨数
// BigDecimal platformResidueSum = vehicleUsageMap.get(1);
// BigDecimal ownResidueSum = vehicleUsageMap.get(2);
// BigDecimal residueSum = platformResidueSum.add(ownResidueSum);
// RollbackOrderWeightParam param = new RollbackOrderWeightParam();
// param.setOrderNo(orderInfoFeignVO.getOrderNo());
// param.setResidueWeight(residueSum);
// param.setPlatformResidueCarryWeight(platformResidueSum);
// param.setOwnResidueCarryWeight(ownResidueSum);
// orderFeign.rollbackOrderWeight(param);
// }
//
//
// }
}
//@Override
//@Transactional(rollbackFor = Exception.class)
public void ownerCancelOrder(String orderNo) {
log.info("开始执行订单取消吨数回填");
FeignOrderVO orderInfoFeignVO = orderFeign.getOrderInfoFeign(orderNo);
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
Map<Integer, BigDecimal> truckDemandMap = new HashMap<>();
truckDemandMap.put(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode(), BigDecimal.ZERO);
truckDemandMap.put(TruckDemandEnum.TruckType.OWNER_CAR.getCode(), BigDecimal.ZERO);
if (!TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode().equals(orderInfoFeignVO.getTruckDemand())) {
if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
//已完结
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
for (OrderChild orderChild : orderChildrenList) {
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.OWNER_CANCEL.getCode());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao.updateEntityByKey(update);
}
Map<String, List<OrderGoods>> orderGoodsMap = orderGoodsList.stream()
.collect(Collectors.groupingBy(OrderGoods::getOrderGoodsNo));
Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) {
String orderGoodsNo = entry.getKey();
OrderGoods orderGoods = entry.getValue().get(0);
List<OrderChild> orderChildren = orderChildMap.get(orderGoodsNo);
BigDecimal sum = BigDecimal.ZERO;
if (CollectionUtil.isNotEmpty(orderChildren)) {
sum = orderChildren.stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
}
truckDemandMap.put(orderGoods.getTruckDemand(),
truckDemandMap.get(orderGoods.getTruckDemand())
.add(orderGoods.getResidueTransportWeight().add(sum)));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态 注意判断货单是已完结还是已完成
update.setResidueTransportWeight(BigDecimal.ZERO);
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
} else if (OrderEnum.Status.CANCELED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
//已取消
for (OrderGoods orderGoods : orderGoodsList) {
truckDemandMap.put(orderGoods.getTruckDemand(),
truckDemandMap.get(orderGoods.getTruckDemand())
.add(orderGoods.getResidueTransportWeight()));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
// update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
orderGoodsDao.updateEntityByKey(update);
}
}
Integer truckDemand = orderInfoFeignVO.getTruckDemand();
BigDecimal residueWeight = truckDemandMap.get(truckDemand);
if (residueWeight.compareTo(BigDecimal.ZERO) == 0) {
log.info("当前订单对应的货单无需吨数回填,订单编号{}", orderNo);
return;
}
//归还吨数
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderInfoFeignVO.getOrderNo());
if (truckDemand.equals(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode())) {
param.setResidueWeight(residueWeight);
param.setOwnResidueCarryWeight(BigDecimal.ZERO);
param.setPlatformResidueCarryWeight(residueWeight);
}
if (truckDemand.equals(TruckDemandEnum.TruckType.OWNER_CAR.getCode())) {
param.setResidueWeight(residueWeight);
param.setOwnResidueCarryWeight(residueWeight);
param.setPlatformResidueCarryWeight(BigDecimal.ZERO);
}
orderFeign.rollbackOrderWeight(param);
} else {
Map<Integer, BigDecimal> vehicleUsageMap = new HashMap<>();
vehicleUsageMap.put(1, BigDecimal.ZERO);
vehicleUsageMap.put(2, BigDecimal.ZERO);
if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
//已完结
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo, OrderChildEnum.Status.ARRIVE_SEND.getCode());
for (OrderChild orderChild : orderChildrenList) {
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao.updateEntityByKey(update);
}
//货单
Map<String, List<OrderGoods>> orderGoodsMap = orderGoodsList.stream()
.collect(Collectors.groupingBy(OrderGoods::getOrderGoodsNo));
//运单
Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream()
.collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) {
String orderGoodsNo = entry.getKey();
OrderGoods orderGoods = entry.getValue().get(0);
BigDecimal sum = BigDecimal.ZERO;
if (CollectionUtil.isNotEmpty(orderChildMap.get(orderGoodsNo))) {
sum = orderChildMap.get(orderGoodsNo).stream()
.map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
}
vehicleUsageMap.put(orderGoods.getVehicleUsage(),
vehicleUsageMap.get(orderGoods.getVehicleUsage())
.add(orderGoods.getResidueTransportWeight().add(sum)));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
//update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
} else if (OrderEnum.Status.CANCELED.getCode().equals(orderInfoFeignVO.getOrderStatus())) {
//已取消
for (OrderGoods orderGoods : orderGoodsList) {
vehicleUsageMap.put(orderGoods.getVehicleUsage(),
vehicleUsageMap.get(orderGoods.getVehicleUsage())
.add(orderGoods.getResidueTransportWeight()));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
//update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
}
//归还吨数
BigDecimal platformResidueSum = vehicleUsageMap.get(1);
BigDecimal ownResidueSum = vehicleUsageMap.get(2);
BigDecimal residueSum = platformResidueSum.add(ownResidueSum);
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderInfoFeignVO.getOrderNo());
param.setResidueWeight(residueSum);
param.setPlatformResidueCarryWeight(platformResidueSum);
param.setOwnResidueCarryWeight(ownResidueSum);
orderFeign.rollbackOrderWeight(param);
}
}
@Override
......@@ -639,6 +640,7 @@ public class OrderCancelServiceImpl implements OrderCancelService {
}
break;
default:
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "参数有误");
......
......@@ -28,6 +28,7 @@ import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.struct.OrderGoodsStruct;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.feign.OrderGoodsFeignVO;
import com.clx.performance.vo.pc.OrderGoodsEditVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.clx.user.feign.UserClxFeign;
import com.msl.common.base.Optional;
......@@ -441,8 +442,33 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
}
@Override
public OrderGoodsVO findOrderGoodsByBatchNumber(Long batchNumber) {
OrderGoodsVO orderGoodsVO = orderGoodsDao.findOrderGoodsByBatchNumber(batchNumber);
return orderGoodsVO;
public OrderGoodsEditVO findOrderGoodsByBatchNumber(Long batchNumber) {
OrderGoodsEditVO result = new OrderGoodsEditVO();
List<OrderGoodsVO> orderGoodsVOList = orderGoodsDao.findOrderGoodsByBatchNumber(batchNumber);
String orderNo = orderGoodsVOList.get(0).getOrderNo();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
result.setOrderNo(orderInfoFeign.getOrderNo());
result.setTransportWeight(orderInfoFeign.getTransportWeight());
result.setValidFreightPrice(orderInfoFeign.getValidFreightPrice());
result.setTruckDemand(orderInfoFeign.getTruckDemand());
result.setResidueWeight(orderInfoFeign.getResidueWeight());
result.setOwnCarryWeight(orderInfoFeign.getOwnCarryWeight());
result.setOwnResidueCarryWeight(orderInfoFeign.getOwnResidueCarryWeight());
result.setPlatformCarryWeight(orderInfoFeign.getPlatformCarryWeight());
result.setDownFloatWeight(orderInfoFeign.getDownFloatWeight());
result.setUpFloatWeight(orderInfoFeign.getUpFloatWeight());
result.setStopFlag(orderInfoFeign.getStopFlag());
result.setSettlementAccountPeriod(orderInfoFeign.getSettlementAccountPeriod());
List<String> orderGoodsList = orderGoodsVOList.stream().map(OrderGoodsVO::getOrderGoodsNo).collect(Collectors.toList());
List<OrderChild> orderChildList = orderChildDao.selectListByOrderGoodsList(orderGoodsList);
if (CollectionUtils.isNotEmpty(orderChildList)) {
result.setEditAllFlag(false);
} else {
result.setEditAllFlag(true);
}
result.setOrderGoodsVOList(orderGoodsVOList);
return result;
}
}
......@@ -184,5 +184,29 @@ public class OrderGoodsSqlProvider {
return sql;
}
public String pageOrderGoodsList(@Param("batchNumber") Long batchNumber) {
String sql = new SQL() {{
SELECT("a.id, a.order_no," +
" a.order_goods_no, a.order_goods_status, a.extract_weight, " +
" if(a.residue_transport_weight < 0, '0', a.residue_transport_weight) as residue_transport_weight ,a.already_transport_weight, a.send_address_id, a.send_address_shorter,a.send_longitude," +
" a.send_latitude,a.receive_address_id, a.receive_address_shorter,a.receive_longitude,a.receive_latitude," +
"a.goods_id, a.goods_name, a.pending_order_way," +
" date_format(a.directional_expire_time, '%Y-%m-%d %H:%i:%s') as directional_expire_time ," +
" date_format(a.last_arrive_send_time, '%Y-%m-%d %H:%i:%s') as last_arrive_send_time ," +
" date_format(a.pending_order_time, '%Y-%m-%d %H:%i:%s') as pending_order_time," +
" date_format(a.create_time, '%Y-%m-%d %H:%i:%s') as create_time," +
" date_format(a.modified_time, '%Y-%m-%d %H:%i:%s') as modified_time," +
"a.extract_way,a.need_truck_num,a.senior_logistics_manager_id,a.senior_logistics_manager_name,a.pending_order_freight," +
"a.user_no,a.user_name,batch_number,last_arrive_receive_time,last_load_time,last_order_time");
FROM("order_goods a");
if (Objects.nonNull(batchNumber)) {
WHERE("a.batch_number = #{batchNumber}");
}
ORDER_BY("a.create_time desc");
}}.toString();
return sql;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论