提交 df510199 authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/v4.9_create_goods_child_20230918' into…

Merge remote-tracking branch 'origin/v4.9_create_goods_child_20230918' into v4.9_create_goods_child_20230918
......@@ -45,7 +45,13 @@ public enum PerformanceResultEnum implements ResultEnum {
ORDER_CHILD_LOAD_TIMEOUT(1305, "超过装货截止时间"),
ORDER_CHILD_CANCEL_FORBID(1306, "运单无法取消"),
ORDER_CHILD_CANCEL_FORBID_COUNT(1307, "超出最大取消数量"),
ORDER_CHILD_POUND_AUDIT(1307, "磅单审核中"),
ORDER_CHILD_POUND_AUDIT(1308, "磅单审核中"),
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR(1309, "请选择定向车辆"),
ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR1(1310, "请选择非定向车辆"),
ORDER_CHILD_DIRECT_REJECT_TRUCK_ERROR(1311, "非定向车辆无法取消"),
ORDER_CHILD_LOAD_WEIGHT_ERROR(1312, "装货净重超过载重的1.5倍"),
ORDER_CHILD_UNLOAD_WEIGHT_ERROR(1313, "卸货净重超过载重的1.5倍"),
;
......
......@@ -5,6 +5,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
......@@ -25,13 +26,12 @@ public class OrderChildLoadAndUnloadAgainParam extends PositionParam {
private String unloadPoundNo;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "2.46")
@NotNull(message = "装货毛重不能为空")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
@NotNull(message = "装货皮重不能为空")
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
@Max(value = 999, message = "最大999吨")
private BigDecimal loadNet;
@ApiModelProperty(value = "磅单图片列表")
......@@ -39,13 +39,12 @@ public class OrderChildLoadAndUnloadAgainParam extends PositionParam {
private List<String> loadImageList;
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "2.46")
@NotNull(message = "装货毛重不能为空")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "1.23")
@NotNull(message = "装货皮重不能为空")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
@Max(value = 999, message = "最大999吨")
private BigDecimal unloadNet;
@ApiModelProperty(value = "磅单图片列表")
......
......@@ -5,6 +5,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
......@@ -21,13 +22,12 @@ public class OrderChildLoadParam extends PositionParam {
private String childNo;
@ApiModelProperty(value = "装货毛重(单位吨)", example = "2.46")
@NotNull(message = "装货毛重不能为空")
private BigDecimal loadRough;
@ApiModelProperty(value = "装货皮重(单位吨)", example = "1.23")
@NotNull(message = "装货皮重不能为空")
private BigDecimal loadTare;
@ApiModelProperty(value = "装货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
@Max(value = 999, message = "最大999吨")
private BigDecimal loadNet;
@ApiModelProperty(value = "磅单图片列表")
......
......@@ -5,6 +5,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
......@@ -25,13 +26,12 @@ public class OrderChildUnloadParam extends PositionParam {
private String unloadPoundNo;
@ApiModelProperty(value = "卸货毛重(单位吨)", example = "2.46")
@NotNull(message = "装货毛重不能为空")
private BigDecimal unloadRough;
@ApiModelProperty(value = "卸货皮重(单位吨)", example = "1.23")
@NotNull(message = "装货皮重不能为空")
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
@NotNull(message = "装货净重不能为空")
@Max(value = 999, message = "最大999吨")
private BigDecimal unloadNet;
@ApiModelProperty(value = "磅单图片列表")
......
......@@ -29,6 +29,9 @@ public class OrderChildPoundInfoVO {
private BigDecimal unloadTare;
@ApiModelProperty(value = "卸货净重(单位吨)", example = "1.23")
private BigDecimal unloadNet;
@ApiModelProperty(value = "卸货磅单编号", example = "url")
private String unloadPoundNo;
@ApiModelProperty(value = "拉运重量(单位吨)", example = "1.23")
private BigDecimal weight;
@ApiModelProperty(value = "运费(元)", example = "1.23")
......
......@@ -34,6 +34,15 @@ public class CarrierOrderChildDetailVO {
@MoneyOutConvert
private BigDecimal freightPrice;
@ApiModelProperty(value = "应付运费(元)", example = "1.23")
private BigDecimal payableFreight;
@ApiModelProperty(value = "亏吨扣款(元)", example = "1.23")
private BigDecimal lossDeduction;
@ApiModelProperty(value = "实付运费(元)", example = "1.23")
private BigDecimal realFreight;
@ApiModelProperty(value = "损耗单价(元)", example = "1.23")
@MoneyOutConvert
......@@ -43,6 +52,9 @@ public class CarrierOrderChildDetailVO {
@MoneyOutConvert
private BigDecimal orderFreightPrice;
@ApiModelProperty("货物重量")
private BigDecimal extractWeight;
@ApiModelProperty(value = "发货地址", example = "朝阳")
private String sendAddress;
......
......@@ -41,6 +41,9 @@ public class OrderChildPoundAuditDetailVO {
@ApiModelProperty(value="卸车磅单图片")
private List<String> unloadImages;
@ApiModelProperty(value="创建时间",example = "2012-01-01 01:10:10")
private String createTime;
}
\ No newline at end of file
......@@ -20,6 +20,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
......@@ -60,7 +61,14 @@ public class CarrierOrderChildController {
public Result<List<OrderChildStatusVO>> getOrderChildStatusList() {
ConcurrentHashMap<Integer, String> map = OrderChildEnum.map;
List<OrderChildStatusVO> result = map.entrySet().stream().map(c -> new OrderChildStatusVO(c.getKey(), c.getValue())).collect(Collectors.toList());
result.stream().sorted(Comparator.comparing(OrderChildStatusVO::getStatus)).collect(Collectors.toList());
Collections.sort(result, new Comparator<OrderChildStatusVO>() {
@Override
public int compare(OrderChildStatusVO o1, OrderChildStatusVO o2) {
Integer status1= o1.getStatus();
Integer status2= o2.getStatus();
return status1.compareTo(status2);
}
});
return Result.ok(result);
}
......
......@@ -19,7 +19,7 @@ public interface OrderChildImageDao extends BaseDao<OrderChildImageMapper, Order
boolean deleteUnload(String childNo);
boolean deleteLoadAndUnload(String childNo);
Optional<List<OrderChildImage>> getImages(String childNo, Integer type);
List<OrderChildImage> getImages(String childNo, Integer type);
Optional<List<OrderChildImage>> listLoadAndUnload(String childNo);
......
......@@ -18,8 +18,12 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
void saveBatchEntity(String orderNo, String orderGoodsNo, List<String> trackList, LocalDateTime now);
boolean updateStatus(OrderGoodsTruckBind item);
List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo);
Optional<OrderGoodsTruckBind> getByOrderGoodsNoAndTruckNo(String orderGoodsNo, String truckNo);
Optional<OrderGoodsTruckBind> getValidByOrderGoodsNoAndTruckNo(String orderGoodsNo, String truckNo);
Optional<List<OrderGoodsTruckBind>> selectListByTruckNo(List<String> truckList);
}
......@@ -7,6 +7,7 @@ import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.Collections;
import java.util.List;
/**
......@@ -54,9 +55,9 @@ public class OrderChildImageImpl extends BaseDaoImpl<OrderChildImageMapper, Orde
}
@Override
public Optional<List<OrderChildImage>> getImages(String childNo, Integer type) {
public List<OrderChildImage> getImages(String childNo, Integer type) {
return Optional.ofEmpty(list(lQrWrapper()
.eq(OrderChildImage::getChildNo, childNo)
.eq(OrderChildImage::getType, type)));
.eq(OrderChildImage::getType, type))).orElseGet(Collections::emptyList);
}
}
......@@ -27,6 +27,14 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
baseMapper.saveBatchEntity(orderNo, orderGoodsNo, trackList, DateUtils.formatDateTime(now).get());
}
@Override
public boolean updateStatus(OrderGoodsTruckBind item) {
return update(lUdWrapper()
.eq(OrderGoodsTruckBind::getId, item.getId())
.set(OrderGoodsTruckBind::getStatus, item.getStatus())
);
}
@Override
public List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo) {
return baseMapper.getTrucksByOrderGoodsNo(orderGoodsNo);
......@@ -41,6 +49,15 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
}
@Override
public Optional<OrderGoodsTruckBind> getValidByOrderGoodsNoAndTruckNo(String orderGoodsNo, String truckNo) {
return Optional.ofNullable(getOne(lQrWrapper()
.eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.eq(OrderGoodsTruckBind::getTruckNo, truckNo)
.in(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBind.Status.NORMAL.getCode())
));
}
@Override
public Optional<List<OrderGoodsTruckBind>> selectListByTruckNo(List<String> truckList) {
return Optional.ofNullable(baseMapper.selectList(new QueryWrapper<OrderGoodsTruckBind>().lambda()
......
......@@ -11,6 +11,7 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Optional;
......@@ -36,8 +37,8 @@ public class OrderChildPoundAudit implements HasKey<Integer> {
private Integer status; //审核状态 0 待审核 1 审核通过 2 审核驳回
private Integer rejectType; //审核驳回类型:1装车 2卸车 3装车+卸车
private String remark; //备注
private String createTime; //创建时间
private String modifiedTime; //修改时间
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id")
@Override
......
......@@ -7,11 +7,14 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Optional;
/**
* 货单定向绑定车辆表
......@@ -30,7 +33,7 @@ public class OrderGoodsTruckBind implements HasKey<Integer> {
private String truckNo;
@TableField("status")
@ApiModelProperty("1:正常 2:取消")
@ApiModelProperty("状态 1:正常 2:取消 3: 已接单")
private Integer status;
@TableField("order_no")
......@@ -55,4 +58,21 @@ public class OrderGoodsTruckBind implements HasKey<Integer> {
public Integer gainKey() {
return this.id;
}
@Getter
@AllArgsConstructor
public enum Status {
NORMAL(1, "正常"),
CANCEL(2, "取消"),
ORDER(3, "已接单"),
;
private final int code;
private final String msg;
public static Optional<Status> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
}
......@@ -2,10 +2,7 @@ package com.clx.performance.service.impl;
import com.clx.performance.dao.*;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.enums.OrderChildPoundAuditEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.*;
import com.clx.performance.model.*;
import com.clx.performance.param.pc.OrderChildCarrierCancelParam;
import com.clx.performance.param.pc.PoundAuditParam;
......@@ -35,6 +32,7 @@ import java.util.stream.Collectors;
@AllArgsConstructor
public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditService {
private final OrderGoodsTruckBindDao orderGoodsTruckBindDao;
private final OrderChildImageDao orderChildImageDao;
private final OrderChildPoundAuditDao orderChildPoundAuditDao;
......@@ -51,8 +49,8 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
@Override
public OrderChildPoundAuditDetailVO getPoundAuditDetail(String childNo) {
OrderChildPoundAudit poundAuditDetail = orderChildPoundAuditDao.getPoundAuditDetail(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
List<OrderChildImage> loadImages = orderChildImageDao.getImages(childNo, OrderChildImage.Type.LOAD.getCode()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
List<OrderChildImage> unloadImages = orderChildImageDao.getImages(childNo, OrderChildImage.Type.UNLOAD.getCode()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
List<OrderChildImage> loadImages = orderChildImageDao.getImages(childNo, OrderChildImage.Type.LOAD.getCode());
List<OrderChildImage> unloadImages = orderChildImageDao.getImages(childNo, OrderChildImage.Type.UNLOAD.getCode());
OrderChildPoundAuditDetailVO vo = new OrderChildPoundAuditDetailVO();
vo.setChildNo(childNo);
vo.setLoadImages(loadImages.stream().map(OrderChildImage::getImage).collect(Collectors.toList()));
......@@ -142,6 +140,13 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 定向
OrderGoodsTruckBind orderGoodsTruckBind = null;
if (Objects.equals(orderGoods.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())){
orderGoodsTruckBind = orderGoodsTruckBindDao.getByOrderGoodsNoAndTruckNo(orderGoods.getOrderGoodsNo(), orderChild.getTruckNo())
.orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
}
orderChild.setCancelRemark(param.getRemark());
orderChild.setCancelTime(now);
orderChild.setFinishTime(now);
......@@ -150,7 +155,10 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
orderChildDao.updateCancel(orderChild);
// 返回吨数
cancelReturnWeight(orderChild, orderGoods);
updateOrderGoodsAmountReturn(orderChild, orderGoods);
// 取消定向
updateOrderGoodsDirectCancel(orderGoodsTruckBind);
// 释放司机、车辆
releaseDriver(orderChild.getDriverUserNo());
......@@ -164,8 +172,18 @@ public class OrderChildPoundAuditServiceImpl implements OrderChildPoundAuditSer
/**
* 取消返吨数
*/
private void cancelReturnWeight(OrderChild orderChild, OrderGoods orderGoods){
private void updateOrderGoodsAmountReturn(OrderChild orderChild, OrderGoods orderGoods){
orderGoodsDao.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), orderChild.getWeight().negate());
}
/**
* 更新定向派单状态 (取消)
*/
private void updateOrderGoodsDirectCancel(OrderGoodsTruckBind orderGoodsTruckBind){
if (orderGoodsTruckBind == null) {return;}
orderGoodsTruckBind.setStatus(OrderGoodsTruckBind.Status.CANCEL.getCode());
orderGoodsTruckBindDao.updateStatus(orderGoodsTruckBind);
}
/**
......
......@@ -103,9 +103,13 @@ public class OrderChildServiceImpl implements OrderChildService {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_INVALID);
}
OrderGoodsTruckBind orderGoodsTruckBind = null;
// 定向
OrderGoodsTruckBind orderGoodsTruckBind = orderGoodsTruckBindDao.getValidByOrderGoodsNoAndTruckNo(orderGoods.getOrderGoodsNo(), truckNo).orNull();
if (Objects.equals(orderGoods.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())){
orderGoodsTruckBind = orderGoodsTruckBindDao.getByOrderGoodsNoAndTruckNo(orderGoods.getOrderGoodsNo(), truckNo).orElseThrow(PerformanceResultEnum.ORDER_INVALID);
if (orderGoodsTruckBind == null){throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR);}
}
else {
if (orderGoodsTruckBind != null){throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_DIRECT_ORDER_TRUCK_ERROR1);}
}
// 库存验证
......@@ -154,7 +158,7 @@ public class OrderChildServiceImpl implements OrderChildService {
updateOrderGoodsAmount(orderGoods, truckLoad);
// 更新定向单状态
updateOrderGoods(orderGoodsTruckBind);
updateOrderGoodsDirect(orderGoodsTruckBind);
// 新增运单
orderChildDao.saveEntity(orderChild);
......@@ -179,7 +183,6 @@ public class OrderChildServiceImpl implements OrderChildService {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Long userNo = loginUserInfo.getUserNo();
LocalDateTime now = LocalDateTime.now();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(param.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.ORDER_INVALID);
// 状态验证
if (!Objects.equals(orderGoods.getOrderGoodsStatus(), OrderGoodsStatusEnum.Status.PAYING.getCode())
......@@ -192,9 +195,11 @@ public class OrderChildServiceImpl implements OrderChildService {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_INVALID);
}
orderGoodsTruckBindDao.getByOrderGoodsNoAndTruckNo(orderGoods.getOrderGoodsNo(), param.getTruckNo()).orElseThrow(PerformanceResultEnum.ORDER_INVALID);
OrderGoodsTruckBind orderGoodsTruckBind = orderGoodsTruckBindDao.getValidByOrderGoodsNoAndTruckNo(orderGoods.getOrderGoodsNo(), param.getTruckNo())
.orElseThrow(PerformanceResultEnum.ORDER_CHILD_DIRECT_REJECT_TRUCK_ERROR);
updateOrderGoodsReject(orderGoods, param.getTruckNo());
// 更新定向派单
updateOrderGoodsDirectReject(orderGoodsTruckBind);
}
......@@ -320,6 +325,10 @@ public class OrderChildServiceImpl implements OrderChildService {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCELED);
}
if (loadCheck(param.getLoadNet(), orderChild.getTruckLoad())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_WEIGHT_ERROR);
}
if (orderChild.getLoadTime() == null && Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_SEND.getCode())) {
updateLoadFirst(param, orderChild);
// 日志
......@@ -358,6 +367,8 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setStatus(OrderChildEnum.Status.LOAD.getCode());
orderChildDao.updateLoad(orderChild);
//
orderChildImageDao.batchSaveEntity(imageList);
}
......@@ -402,6 +413,10 @@ public class OrderChildServiceImpl implements OrderChildService {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCELED);
}
if (loadCheck(param.getUnloadNet(), orderChild.getTruckLoad())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_WEIGHT_ERROR);
}
if (orderChild.getUnloadTime() == null && Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())) {
updateUnloadFirst(param, orderChild);
// 日志
......@@ -452,6 +467,10 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildPoundAuditDao.saveEntity(audit);
// 释放司机、车辆
releaseDriver(orderChild.getDriverUserNo());
releaseTruck(orderChild.getTruckId());
}
private void updateReUnload(OrderChildUnloadParam param, OrderChild orderChild) {
......@@ -519,6 +538,13 @@ public class OrderChildServiceImpl implements OrderChildService {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_STATUS_CHANGED);
}
if (loadCheck(param.getLoadNet(), orderChild.getTruckLoad())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_WEIGHT_ERROR);
}
if (loadCheck(param.getUnloadNet(), orderChild.getTruckLoad())){
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_WEIGHT_ERROR);
}
List<OrderChildImage> imageList = new ArrayList<>();
for (String item : param.getLoadImageList()) {
OrderChildImage image = new OrderChildImage();
......@@ -596,10 +622,6 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setStatus(OrderChildEnum.Status.UNSETTLE.getCode());
orderChildDao.updateStatus(orderChild);
// 释放司机、车辆
releaseDriver(orderChild.getDriverUserNo());
releaseTruck(orderChild.getTruckId());
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(), OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(),
loginUserInfo.getUserNo(), loginUserInfo.getUserName());
......@@ -632,6 +654,13 @@ public class OrderChildServiceImpl implements OrderChildService {
// 取消量验证
if (!cancelCountCheck(userNo)){throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_CANCEL_FORBID_COUNT);}
// 定向
OrderGoodsTruckBind orderGoodsTruckBind = null;
if (Objects.equals(orderGoods.getPendingOrderWay(), OrderGoodsPendingOrderWayStatusEnum.Status.EXCLUSIVE.getCode())){
orderGoodsTruckBind = orderGoodsTruckBindDao.getByOrderGoodsNoAndTruckNo(orderGoods.getOrderGoodsNo(), orderChild.getTruckNo())
.orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
}
orderChild.setCancelRemark(param.getRemark());
orderChild.setCancelTime(now);
orderChild.setFinishTime(now);
......@@ -640,7 +669,10 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChildDao.updateCancel(orderChild);
// 返回吨数
cancelReturnWeight(orderChild, orderGoods);
updateOrderGoodsAmountReturn(orderChild, orderGoods);
// 取消定向
updateOrderGoodsDirectCancel(orderGoodsTruckBind);
// 释放司机、车辆
releaseDriver(orderChild.getDriverUserNo());
......@@ -764,21 +796,50 @@ public class OrderChildServiceImpl implements OrderChildService {
* 更新货单数据
*/
private void updateOrderGoodsAmount(OrderGoods orderGoods, BigDecimal weight){
if (orderGoods.getResidueTransportWeight().compareTo(weight) <= 0) {orderGoods.setOrderGoodsStatus(0);}
orderGoodsDao.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), weight);
}
orderGoodsService.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), weight);
/**
* 取消返吨数
*/
private void updateOrderGoodsAmountReturn(OrderChild orderChild, OrderGoods orderGoods){
orderGoodsDao.updateOrderGoodsReduceWeightAndStatus(orderGoods.getId(), orderChild.getWeight().negate());
}
/**
* 更新定向单状态
* 更新定向单状态 (接单)
*/
private void updateOrderGoods(OrderGoodsTruckBind orderGoodsTruckBind){
private void updateOrderGoodsDirect(OrderGoodsTruckBind orderGoodsTruckBind){
if (orderGoodsTruckBind == null) {return;}
orderGoodsTruckBind.setStatus(OrderGoodsTruckBind.Status.ORDER.getCode());
orderGoodsTruckBindDao.updateStatus(orderGoodsTruckBind);
}
private void updateOrderGoodsReject(OrderGoods orderGoods, String truckNo){
/**
* 更新定向派单状态 (拒绝)
*/
private void updateOrderGoodsDirectReject(OrderGoodsTruckBind orderGoodsTruckBind){
orderGoodsTruckBind.setStatus(OrderGoodsTruckBind.Status.CANCEL.getCode());
orderGoodsTruckBindDao.updateStatus(orderGoodsTruckBind);
}
/**
* 更新定向派单状态 (取消)
*/
private void updateOrderGoodsDirectCancel(OrderGoodsTruckBind orderGoodsTruckBind){
if (orderGoodsTruckBind == null) {return;}
orderGoodsTruckBind.setStatus(OrderGoodsTruckBind.Status.CANCEL.getCode());
orderGoodsTruckBindDao.updateStatus(orderGoodsTruckBind);
}
/**
* 拉运吨数检测
*/
private boolean loadCheck(BigDecimal weight, BigDecimal truckLoad){
if (weight.compareTo(truckLoad.multiply(new BigDecimal("1.5"))) > 0) {return false;}
return true;
}
/**
......@@ -793,13 +854,6 @@ public class OrderChildServiceImpl implements OrderChildService {
return count<10;
}
/**
* 取消返吨数
*/
private void cancelReturnWeight(OrderChild orderChild, OrderGoods orderGoods){
}
/**
* 运单拉运吨数计算
*/
......@@ -870,12 +924,47 @@ public class OrderChildServiceImpl implements OrderChildService {
@Override
public CarrierOrderChildDetailVO getCarrierOrderChildDetail(String childNo) {
//运单数据
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
CarrierOrderChildDetailVO carrierOrderChildDetailVO = orderChildStruct.carrierConvert(orderChild);
//货单数据
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.ORDER_NO_FOUND);
carrierOrderChildDetailVO.setExtractWeight(orderGoods.getExtractWeight());
//磅单审核数据
List<OrderChildPoundAudit> poundAuditList = orderChildPoundAuditDao.getPoundAuditList(childNo);
carrierOrderChildDetailVO.setPoundAudits(orderChildPoundStruct.convert(poundAuditList));
//运单日志
List<OrderChildLog> orderChildLog = orderChildLogService.getOrderChildNodeLog(childNo);
carrierOrderChildDetailVO.setChildLogs(orderChildLogStruct.convert(orderChildLog));
//应付运费
BigDecimal payableFreight=BigDecimal.ZERO;
if(Objects.nonNull(orderChild.getLoadNet())){
payableFreight = orderChild.getLoadNet().multiply(carrierOrderChildDetailVO.getFreight());
}
//亏吨扣款(元)
BigDecimal lossDeduction=BigDecimal.ZERO;
if(Objects.nonNull(orderChild.getLoadNet()) && Objects.nonNull(orderChild.getUnloadNet())){
if(orderChild.getLoadNet().compareTo(orderChild.getUnloadNet()) >0){
lossDeduction = carrierOrderChildDetailVO.getFreight().multiply(orderChild.getLoadNet().subtract(orderChild.getUnloadNet()));
}
}
//实付运费(元)
BigDecimal realFreight=payableFreight.subtract(lossDeduction);
carrierOrderChildDetailVO.setPayableFreight(payableFreight);
carrierOrderChildDetailVO.setLossDeduction(lossDeduction);
carrierOrderChildDetailVO.setRealFreight(realFreight);
//磅单图片
List<OrderChildImage> loadImages = orderChildImageDao.getImages(childNo, OrderChildImage.Type.LOAD.getCode());
List<OrderChildImage> unloadImages = orderChildImageDao.getImages(childNo, OrderChildImage.Type.UNLOAD.getCode());
carrierOrderChildDetailVO.setLoadImageList(loadImages.stream().map(OrderChildImage::getImage).collect(Collectors.toList()));
carrierOrderChildDetailVO.setUnloadImageList(unloadImages.stream().map(OrderChildImage::getImage).collect(Collectors.toList()));
return carrierOrderChildDetailVO;
}
}
......@@ -97,7 +97,7 @@ public class OrderGoodsSqlProvider {
WHERE("a.last_arrive_send_time >= now()");
WHERE("(a.order_goods_status = 20 or a.order_goods_status = 30)");
WHERE("a.residue_transport_weight >0");
ORDER_BY("a.create_time desc");
ORDER_BY("a.pending_order_time desc");
}}.toString();
return sql;
}
......@@ -132,7 +132,7 @@ public class OrderGoodsSqlProvider {
}
sqlList.append(") order by a.create_time desc");
sqlList.append(") order by a.pending_order_time desc");
return sqlList.toString();
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论