提交 45e50b38 authored 作者: liruixin's avatar liruixin

Merge branch 'v5.7_break_contract_reverse_20231020' into test

package com.clx.performance.param.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class ArtificialCancelOrderParam {
@NotNull(message = "运单编号不能为空")
@ApiModelProperty("运单编号")
private String orderChildNo;
@ApiModelProperty("取消原因")
private String remark;
}
......@@ -170,4 +170,7 @@ public class OrderChildVO {
return OrderChildEnum.Status.getByCode(status).get().getName();
}
@ApiModelProperty("货物类型名称")
public String goodTypeName;
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.clx.performance.controller.pc;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.ArtificialCancelOrderParam;
import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.param.pc.PageOrderGoodsListParam;
import com.clx.performance.service.OrderCancelService;
......@@ -52,9 +53,9 @@ public class OrderCancelController {
}
@ApiOperation(value = "客服取消运单", notes = "<br>By:胡宇帆")
@GetMapping("/artificialCancelOrder")
public Result<Object> artificialCancelOrder(@RequestParam(value = "orderChildNo") String orderChildNo, @RequestParam(value = "remark") String remark) {
orderCancelService.artificialCancelOrder(orderChildNo, remark);
@PostMapping("/artificialCancelOrder")
public Result<Object> artificialCancelOrder(@RequestBody ArtificialCancelOrderParam param) {
orderCancelService.artificialCancelOrder(param.getOrderChildNo(), param.getRemark());
return Result.ok();
}
......
......@@ -697,12 +697,25 @@ public class OrderCancelServiceImpl implements OrderCancelService {
@Override
public OrderChildVO findArtificialCancelOrder(String orderChildNo) {
return orderChildDao.findArtificialCancelOrder(orderChildNo);
OrderChildVO artificialCancelOrder = orderChildDao.findArtificialCancelOrder(orderChildNo);
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(artificialCancelOrder.getOrderNo());
if (orderInfoFeign != null) {
artificialCancelOrder.setGoodTypeName(orderInfoFeign.getGoodsTypeName());
}
return artificialCancelOrder;
}
@Override
public IPage<OrderChildVO> orderChildCancelRecord(PageParam pageParam) {
return orderChildDao.orderChildCancelRecord(pageParam);
IPage<OrderChildVO> page = orderChildDao.orderChildCancelRecord(pageParam);
if (!page.getRecords().isEmpty()) {
String orderNo = page.getRecords().get(0).getOrderNo();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
for (OrderChildVO record : page.getRecords()) {
record.setGoodTypeName(orderInfoFeign.getGoodsTypeName());
}
}
return page;
}
......
......@@ -426,13 +426,18 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
BreakContractOwnerRuleVO.AutoRule autoRule = JSONObject.parseObject(autoRuleJson, BreakContractOwnerRuleVO.AutoRule.class);
BreakContractOwnerRuleVO.OrderCancelRule orderCancelRule = autoRule.getOrderCancelRule();//订单取消规则
//运单状态(不包括取消)
//运单状态(包括货主取消)
List<Integer> statusList = Arrays.asList(
new Integer[]{OrderChildEnum.Status.CREATED.getCode(), OrderChildEnum.Status.PAY.getCode(),
OrderChildEnum.Status.GO_TO_SEND.getCode(), OrderChildEnum.Status.ARRIVE_SEND.getCode(),
OrderChildEnum.Status.LOAD.getCode(), OrderChildEnum.Status.GO_TO_RECEIVE.getCode(),
OrderChildEnum.Status.ARRIVE_RECEIVE.getCode(), OrderChildEnum.Status.UNLOAD.getCode(),
OrderChildEnum.Status.OWNER_CANCEL.getCode(),OrderChildEnum.Status.UNSETTLE.getCode()});
OrderChildEnum.Status.UNSETTLE.getCode()});
//由于已经更新了订单状态为货主取消了
if(Objects.equals(cancelType,CancelOrderEnum.Type.NOT_ARRIVE.getCode())){
statusList.add(OrderChildEnum.Status.OWNER_CANCEL.getCode());
}
BigDecimal figure ;//总费用
......@@ -445,7 +450,6 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
List<OrderChild> orderChilds = orderChildDao.listOrderChildByOrderNoAndStatus(orderNo, statusList);
LocalDateTime now = LocalDateTime.now();//当前时间
//没有司机拉运
if(CollectionUtils.isEmpty(orderChilds)){
figure = transportWeight.multiply(validFreightPrice).multiply(orderCancelRule.getAfterRatio());
......@@ -463,25 +467,33 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getLoadNet()));
}
if(Objects.equals(cancelType,CancelOrderEnum.Type.NOT_ARRIVE.getCode())){
if(Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.OWNER_CANCEL.getCode())) {
cancelWeight = cancelWeight.add(orderChild.getWeight());
seconds = seconds.add(new BigDecimal(LocalDateTimeUtils.getSecondsDiff(orderChild.getPayTime(),orderChild.getCancelTime())));
}
}else{
if(Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.CREATED.getCode())
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.PAY.getCode())
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.GO_TO_SEND.getCode())
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.OWNER_CANCEL.getCode())) {
|| Objects.equals(orderChild.getStatus(),OrderChildEnum.Status.GO_TO_SEND.getCode())) {
cancelWeight = cancelWeight.add(orderChild.getWeight());
seconds = seconds.add(new BigDecimal(LocalDateTimeUtils.getSecondsDiff(orderChild.getPayTime(),orderChild.getCancelTime())));
}
}
}
BigDecimal noTransitWeight = transportWeight.subtract(deliveredWeight);//未拉运的重量
BigDecimal noTransitFreight = noTransitWeight.multiply(validFreightPrice);//未拉运的费用
BigDecimal totalFreight = deliveredFreight.add(noTransitFreight);
BigDecimal totalFreight = deliveredFreight.add(noTransitFreight);//总运费
BigDecimal baseFigure = totalFreight.multiply(orderCancelRule.getAfterRatio()).multiply(cancelWeight)
.divide(transportWeight,2, BigDecimal.ROUND_HALF_UP);
.divide(transportWeight,2, BigDecimal.ROUND_HALF_UP);//基础违约金
//挂单后,车辆违约金
BigDecimal truckFigure = BigDecimal.ZERO;
if(Objects.equals(cancelType,CancelOrderEnum.Type.NOT_ARRIVE.getCode())){
truckFigure = seconds.multiply(orderCancelRule.getAfterFigurePerHour())
.divide(new BigDecimal(3600),2, BigDecimal.ROUND_HALF_UP).movePointRight(2);
}
figure = baseFigure.add(truckFigure);
}
}
......
......@@ -160,7 +160,8 @@ public class OrderChildSqlProvider {
"date_format(create_time, '%Y-%m-%d %H:%i:%s') as createTime," +
"date_format(unload_time, '%Y-%m-%d %H:%i:%s') as unloadTime "
);
FROM("order_child");
FROM("order_child a");
WHERE("(child_no = #{orderChildNo}");
WHERE("(status >=" + OrderChildEnum.Status.LOAD.getCode());
WHERE("(status <=" + OrderChildEnum.Status.COMPLETE.getCode());
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论