Commit bd3abbc2 authored by 332784038@qq.com's avatar 332784038@qq.com

Merge branch 'order_fee_update' into release

parents 7774c515 4bb44379
......@@ -3479,4 +3479,6 @@ public interface OrderMapper extends AbstractMapper<OrderDO> {
StatisticsOrderVO statisticsPickUp(@Param("query") OrderQueryVO query);
List<OrderBackPageVO> containerOrderSummaryList(@Param("query") ContainerReportOrderQueryVO query);
List<OrderMarkupVO> shipmentBatchMarkupOrderList(@Param("query") OrderQueryVO query);
}
......@@ -435,8 +435,9 @@ public interface ErrorCodeConstants {
ErrorCode GUAN_LIAN_ORDER_IS_APPROVAL_IN_PROCESS = new ErrorCode(1004001173, "guan.lian.order.is.approval.in.process");
ErrorCode ORDER_UPDATE_BOX_EXCEPTION = new ErrorCode(1004001174, "warehouse.in.box.exception");
ErrorCode BATCH_ORDER_FEE_APPLY_NOT_EXISTS = new ErrorCode(1004001175, "批量费用申请不存在");
ErrorCode BATCH_ORDER_FEE_APPLY_INFO_NOT_EXISTS = new ErrorCode(1004001176, "批量费用申请详情数据不存在");
ErrorCode BATCH_ORDER_FEE_APPLY_NOT_EXISTS = new ErrorCode(1004001175, "batch.order.fee.apply.not.exists");
ErrorCode BATCH_ORDER_FEE_APPLY_INFO_NOT_EXISTS = new ErrorCode(1004001176, "batch.order.fee.apply.info.not.exists");
ErrorCode PARAM_SHIPMENT_NOT_NULL = new ErrorCode(1004001177, "param.shipment.not.null");
//订单不是已装柜/已出货,不可操作
......
......@@ -154,6 +154,8 @@ public interface OrderQueryService {
*/
List<OrderDO> getOrderList(OrderQueryVO query);
List<OrderMarkupVO> shipmentBatchMarkupOrderList(OrderQueryVO query);
PageResult<OrderBackPageVO> orderPage(OrderQueryVO query, PageVO page);
PageResult<OrderBackPageVO> myOrderPage(OrderQueryVO query, PageVO page);
......@@ -418,4 +420,6 @@ public interface OrderQueryService {
boolean isSplitOrderChildren(OrderDO orderDO);
ContainerReportOrderPageResult<OrderCostSummaryDto> containerOrderSummary(ContainerReportOrderQueryVO query, PageVO page);
}
......@@ -1061,6 +1061,29 @@ public class OrderQueryServiceImpl implements OrderQueryService {
return orderMapper.selectList(query);
}
@Override
public List<OrderMarkupVO> shipmentBatchMarkupOrderList(OrderQueryVO query) {
if (Objects.isNull(query.getLang())) {
query.setLang(I18nMessage.getLang());
}
log.warn(I18nMessage.getLang().toString());
List<OrderMarkupVO> list = orderMapper.shipmentBatchMarkupOrderList(query);
if (CollectionUtil.isNotEmpty(list)) {
// 需要将商品信息中的特价状态做判断处理,保存到订单信息中
for (OrderMarkupVO orderMarkupVO : list) {
if (CollectionUtil.isNotEmpty(orderMarkupVO.getOrderItemBackVOList())) {
// 为订单添加最早入仓时间和最后入仓时间值
orderMarkupVO.setFirstInTime(orderMarkupVO.getOrderItemBackVOList().stream().min(Comparator.comparing(OrderItemBackVO::getFirstInTime)).get().getFirstInTime());
orderMarkupVO.setLastInTime(orderMarkupVO.getOrderItemBackVOList().stream().max(Comparator.comparing(OrderItemBackVO::getLastInTime)).get().getLastInTime());
// 当订单项产品有任何一个有特价标记时,那么订单标记为特价
orderMarkupVO.setSpecialPriceType(orderMarkupVO.getOrderItemBackVOList().stream().anyMatch(item -> item.getSpecialPriceType() || item.getSplitCustomPriceType() || item.getSpecialCommission() || item.getChannelManualPricing()));
}
}
}
return list;
}
@Override
public PageResult<OrderBackPageVO> orderPage(OrderQueryVO query, PageVO page) {
if (Objects.isNull(query.getLang())) {
......
package cn.iocoder.yudao.module.order.vo.order;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.common.util.spring.enums.UserTypeEnum;
import cn.iocoder.yudao.framework.i18n.core.I18nMessage;
import cn.iocoder.yudao.module.order.dto.OrderRemindExceptionDto;
import cn.iocoder.yudao.module.order.enums.OrderAbnormalStateEnum;
import cn.iocoder.yudao.module.order.enums.OrderStatusEnum;
import cn.iocoder.yudao.module.order.enums.OrderStatusMsgEnum;
import cn.iocoder.yudao.module.order.vo.orderItem.OrderItemBackVO;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* 订单 Response VO
*
* @author 系统管理员
*/
@Data
@ApiModel("管理后台 - 订单 OrderBackPageVO VO")
@Slf4j
public class OrderMarkupVO {
@ExcelProperty("主键ID")
@ApiModelProperty(value = "主键ID", required = true)
private Long orderId;
@ExcelProperty("订单编号")
@ApiModelProperty(value = "订单编号", required = true)
private String orderNo;
@ExcelProperty("提单编号")
@ApiModelProperty(value = "提单编号")
private String tidanNo;
@ExcelProperty("父编号")
@ApiModelProperty(value = "父编号")
private String parentNumber;
/**
* 父订单id
*/
@ApiModelProperty(value = "父订单id")
private Long parentOrderId;
@ApiModelProperty(value = "初始母订单id")
private Long initialParentOrderId;
@ApiModelProperty(value = "初始母订单编号")
private String initialParentOrderNo;
@ExcelProperty("货柜自编号")
@ApiModelProperty(value = "货柜自编号")
private String containerNumber;
@ExcelProperty("运输方式id")
@ApiModelProperty(value = "运输方式id", required = true)
private Integer transportId;
@ApiModelProperty(value = "订单服务类型(可多选):1 集运服务 2 海外仓")
private String type;
@ApiModelProperty(value = "订单属性:1 普货 2 重货 3 泡货")
private Integer orderType;
@ApiModelProperty(value = "客户经理ID")
private Long salesmanId;
@ApiModelProperty(value = "业务员名称")
private String salesmanName;
@ApiModelProperty(value = "客户经理所属部门ID")
private Long deptId;
@ApiModelProperty(value = "用户ID")
private Long userId;
@ExcelProperty("唛头")
@ApiModelProperty(value = "唛头")
private String marks;
@ExcelProperty("产品备案属性:1有牌,2无牌,3中性,4混牌")
@ApiModelProperty(value = "产品备案属性:1有牌,2无牌,3中性,4混牌")
private Integer productRecord;
@ExcelProperty("是否控货")
@ApiModelProperty(value = "是否控货")
private Boolean isCargoControl;
@ExcelProperty("0 控货中;1 已放完货;2 部分控货")
@ApiModelProperty(value = "0 控货中;1 已放完货;2 部分控货")
private Integer cargoControlStatus;
@ExcelProperty("报关类别:我司全代:1,自单代报:2,混合报关:3")
@ApiModelProperty(value = "报关类别:我司全代:1,自单代报:2,混合报关:3")
private Integer customsType;
@ExcelProperty("订单状态详情见字典")
@ApiModelProperty(value = "订单状态详情见字典:order_status")
private Integer status;
@ExcelProperty("订单异常状态")
@ApiModelProperty(value = "订单异常状态(字典 order_abnormal_state)")
private Integer abnormalState;
@ExcelProperty("订单入仓状态")
@ApiModelProperty(value = "订单入仓状态(字典 order_warehouse_in_status)")
private Integer inWarehouseState;
@ExcelProperty("订单出货状态")
@ApiModelProperty(value = "订单出货状态(字典 order_shipment_state)")
private Integer shipmentState;
@ExcelProperty("审核类型(字典 order_approval_type) 0 为正常")
@ApiModelProperty(value = "审核类型(字典 order_approval_type) 0 为正常")
private Integer auditType;
@ExcelProperty("审核结果")
@ApiModelProperty(value = "审核结果")
private String auditResult;
@ExcelProperty("入仓数量")
@ApiModelProperty(value = "入仓数量")
private Integer sumQuantity;
@ExcelProperty("入仓件数")
@ApiModelProperty(value = "入仓件数", required = true)
private Integer sumNum;
@ExcelProperty("入仓体积")
@ApiModelProperty(value = "入仓体积", required = true)
private BigDecimal sumVolume;
@ExcelProperty("入仓重量")
@ApiModelProperty(value = "入仓重量", required = true)
private BigDecimal sumWeight;
@ApiModelProperty(value = "重货体积")
private BigDecimal wVolume;
@ApiModelProperty(value = "泡货重量")
private BigDecimal vWeight;
@ExcelProperty("下单的客户id")
@ApiModelProperty(value = "下单的客户id", required = true)
private Long customerId;
/**
* 完成入仓的入仓体积
*/
@ApiModelProperty(value = "完成入仓的入仓体积")
private BigDecimal sumVolumeFinishedWarehouseIn;
/**
* 完成入仓的入仓重量
*/
@ApiModelProperty(value = "完成入仓的入仓重量")
private BigDecimal sumWeightFinishedWarehouseIn;
@ExcelProperty("总件数")
@ApiModelProperty(value = "总件数", required = true)
private Integer totalNum;
@ExcelProperty("创建时间")
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "创建时间", required = true)
private Date createTime;
@ExcelProperty("收货人客户id")
@ApiModelProperty(value = "收货人客户id")
private Long consigneeCustomerId;
@ExcelProperty("收货人客户编号")
@ApiModelProperty(value = "收货人客户编号")
private String consigneeCustomerNumber;
@ExcelProperty("收货人跟进客服")
@ApiModelProperty(value = "收货人跟进客服")
private String consigneeFollowCustomerService;
@ExcelProperty("收货人姓名")
@ApiModelProperty(value = "收货人姓名")
private String consigneeName;
@ExcelProperty("收货人姓名(英文)")
@ApiModelProperty(value = "收货人姓名(英文)")
private String consigneeNameEn;
@ExcelProperty("收货人手机")
@ApiModelProperty(value = "收货人手机")
private String consigneePhone;
@ApiModelProperty(value = "收货人手机国家区号")
private String consigneeCountryCode;
@ExcelProperty("发货人客户id")
@ApiModelProperty(value = "发货人客户id")
private Long consignorCustomerId;
@ExcelProperty("发货人客户编号")
@ApiModelProperty(value = "发货人客户编号")
private String consignorCustomerNumber;
@ExcelProperty("发货人跟进客服")
@ApiModelProperty(value = "发货人跟进客服")
private String consignorFollowCustomerService;
@ExcelProperty("发货人姓名")
@ApiModelProperty(value = "发货人姓名")
private String consignorName;
@ExcelProperty("发货人姓名(英文)")
@ApiModelProperty(value = "发货人姓名(英文)")
private String consignorNameEn;
@ExcelProperty("发货人手机")
@ApiModelProperty(value = "发货人手机")
private String consignorPhone;
@ApiModelProperty(value = "发货人手机国家区号")
private String consignorCountryCode;
@ExcelProperty("控货人姓名")
@ApiModelProperty(value = "控货人姓名")
private String cargoControlName;
@ExcelProperty("控货人姓名(英文)")
@ApiModelProperty(value = "控货人姓名(英文)")
private String cargoControlNameEn;
@ExcelProperty("控货人手机")
@ApiModelProperty(value = "控货人手机")
private String cargoControlPhone;
@ExcelProperty("控货人手机国家区号")
@ApiModelProperty(value = "控货人手机国家区号")
private String cargoControlCountryCode;
@ExcelProperty(value = "特需类型")
@ApiModelProperty(value = "特需类型")
private String advanceType;
@ApiModelProperty(value = "始发地ID")
private Long departureId;
@ApiModelProperty(value = "目的地ID")
private Long objectiveId;
@ApiModelProperty(value = "始发地名称")
private String departureName;
@ApiModelProperty(value = "目的地名称")
private String objectiveName;
@ApiModelProperty(value = "始发仓库ID")
private Long startWarehouseId;
@ApiModelProperty(value = "目的仓库ID")
private Long dstWarehouseId;
@ExcelProperty(value = "始发仓库")
@ApiModelProperty(value = "始发仓库")
private String startWarehouseName;
@ExcelProperty(value = "目的仓库")
@ApiModelProperty(value = "目的仓库")
private String dstWarehouseName;
@ApiModelProperty(value = "调仓始发仓id")
private Long adjustToStartWarehouseId;
/**
* 调仓目的仓
*/
@ApiModelProperty(value = "调仓目的仓id")
private Long adjustToDestWarehouseId;
@ExcelProperty("调仓后的始发仓")
@ApiModelProperty(value = "调仓后的始发仓")
private String adjustToStartWarehouseName;
@ExcelProperty("调仓后的目的仓")
@ApiModelProperty(value = "调仓后的目的仓")
private String adjustToDestWarehouseName;
@ApiModelProperty(value = "目的地调仓-始发仓id")
private Long destAdjustToStartWarehouseId;
@ApiModelProperty(value = "目的地调仓-目的仓id")
private Long destAdjustToDestWarehouseId;
@ExcelProperty("目的地调-始发仓")
@ApiModelProperty(value = "目的地调仓-始发仓")
private String destAdjustToStartWarehouseName;
@ExcelProperty("目的地调仓-目的仓")
@ApiModelProperty(value = "目的地调仓-目的仓")
private String destAdjustToDestWarehouseName;
@ApiModelProperty(value = "不阻塞流程的异常说明(支持多个异常说明)")
private String exceptionReason;
@ApiModelProperty(value = "不阻塞流程的异常说明(支持多个异常说明)")
private List<OrderRemindExceptionDto> remindExceptionDtoList;
@ApiModelProperty(value = "是否有异常(此处为不阻塞流程的异常)")
private Boolean isException = Boolean.FALSE;
@ApiModelProperty(value = "费用清单及下单统计")
@ExcelIgnore
private String cost;
@ApiModelProperty(value = "费用清单及下单统计VO")
@ExcelIgnore
private CostVO costVO;
@ExcelProperty(value = "费用清单")
private String feeCost;
@ApiModelProperty(value = "首次入仓时间")
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date firstInTime;
@ApiModelProperty(value = "最后入仓时间")
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date lastInTime;
@ApiModelProperty(value = "是否特价")
private Boolean specialPriceType;
@ApiModelProperty(value = "已装柜时间/到仓时间")
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date loadTime;
@ApiModelProperty(value = "已卸柜/出仓时间")
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date unloadTime;
@ApiModelProperty(value = "是否限制修改收货人")
private Boolean isLimitUpdateConsignee;
@ApiModelProperty(value = "放货锁定收货人到期时间")
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date lockConsigneeTime;
@ApiModelProperty(value = "放货锁定收货人天数")
private Integer lockConsigneeDay;
@ApiModelProperty(value = "提货状态:0 未提货 1 部分提货 2 已提货")
private Integer pickState;
/**
* 渠道名称
*/
@ApiModelProperty(value = "渠道名称")
private String channelName;
/**
* 是否为我控货
*/
@ApiModelProperty(value = "是否为我控货")
private Boolean cargoController = Boolean.FALSE;
/**
* 是否为我发货
*/
@ApiModelProperty(value = "是否为我发货")
private Boolean deliverGoods = Boolean.FALSE;
/**
* 是否为我收货
*/
@ApiModelProperty(value = "是否为我收货")
private Boolean receiving = Boolean.FALSE;
@ApiModelProperty(value = "是否外部仓")
private Boolean isExternalWarehouse = Boolean.FALSE;
/**
* 报价单ID
*/
@ApiModelProperty(value = "报价单ID")
private Long offerId;
@ApiModelProperty(value = "报价单号")
private String offerNo;
/**
* 报价单状态
*/
@ApiModelProperty(value = "报价单状态")
private Integer offerStatus;
/**
* 状态说明
*/
@ApiModelProperty(value = "状态说明")
private String statusText;
/**
* 动态
*/
@ApiModelProperty(value = "动态")
private String statusMsg;
/**
* 关联订单状态
*/
@ApiModelProperty(value = "关联订单状态")
private String guanLianOrderStatus;
@ApiModelProperty(value = "关联订单状态")
private List<GuanLianOrderStatusVO> guanLianOrderStatusVOList;
@ApiModelProperty(value = "目的港清关:1 我司 2 客户")
private Integer portDestCustomsClear;
@ApiModelProperty(value = "发货方式:1 多票 2 单票")
private Integer deliveryWay;
@ApiModelProperty(value = "清关证书备注")
private String customsClearCertRemarks;
@ApiModelProperty(value = "空运可出货状态: 0 默认值 1 待出 2 可出 3 备货中 4 已备货")
private Integer airShipment;
@ApiModelProperty(value = "特价泡重")
private BigDecimal specialVWeight;
@ApiModelProperty(value = "是否处理了渠道特性异常")
private Boolean handlerChannelAttrException;
@ApiModelProperty(value = "打包前入仓重量")
private BigDecimal weightBeforePack;
@ApiModelProperty(value = "打包后入仓重量")
private BigDecimal weightAfterPack;
@ApiModelProperty(value = "备货重量阀值")
private BigDecimal stockOverWeightLimit;
@ApiModelProperty(value = "拆单子订单是作为独立订单计算(拆单业务只要涉及到空运即将所有拆单后的子订单作为独立订单来计算)")
private Boolean splitSeparateOrder = false;
@ApiModelProperty(value = "是否显示提单金额")
private Boolean displayBillLadingPrice = true;
/**
* 状态key(前端在订单列表做权限按钮判断)
*/
@ApiModelProperty(value = "订单列表权限按钮判断状态key")
private Integer statusKey;
/**
* 端口 {@link UserTypeEnum}
*/
@ApiModelProperty(value = "端口(默认管理端)")
private Integer userType = 2;
@ApiModelProperty(value = "语言")
private Integer lang;
@ApiModelProperty(value = "订单关联产品信息")
List<OrderItemBackVO> orderItemBackVOList;
@ApiModelProperty(value = "到仓件数")
private Integer checkNum;
@ApiModelProperty(value = "到仓数量")
private Integer checkQuantity;
@ApiModelProperty(value = "到仓体积")
private BigDecimal checkVolume;
@ApiModelProperty(value = "到仓重量")
private BigDecimal checkWeight;
public void setGuanLianOrderStatus(String guanLianOrderStatus) {
this.guanLianOrderStatus = guanLianOrderStatus;
if (StringUtils.isNotBlank(guanLianOrderStatus)) {
this.guanLianOrderStatusVOList = JSONObject.parseArray(guanLianOrderStatus, GuanLianOrderStatusVO.class);
this.getOrderDesc();
}
}
public void setGuanLianOrderStatusVOList(List<GuanLianOrderStatusVO> guanLianOrderStatusVOList) {
this.guanLianOrderStatusVOList = guanLianOrderStatusVOList;
if (CollectionUtil.isNotEmpty(guanLianOrderStatusVOList)) {
this.guanLianOrderStatus = JSONObject.toJSONString(guanLianOrderStatusVOList);
}
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo.contains("DRAFT") ? null : orderNo;
}
public void setStatus(Integer status) {
this.status = status;
Integer lang = Objects.nonNull(this.lang) ? this.lang : I18nMessage.getLang();
switch(lang) {
case 0:
this.statusText = OrderStatusEnum.valueOf(status).getNameZh();
break;
case 1:
this.statusText = OrderStatusEnum.valueOf(status).getNameEn();
break;
case 2:
this.statusText = OrderStatusEnum.valueOf(status).getNameFr();
break;
default:
this.statusText = OrderStatusEnum.valueOf(status).getNameZh();
}
this.getOrderDesc();
}
public void setAbnormalState(Integer abnormalState) {
this.abnormalState = abnormalState;
this.getOrderDesc();
}
public void setInWarehouseState(Integer inWarehouseState) {
this.inWarehouseState = inWarehouseState;
this.getOrderDesc();
}
public void setAirShipment(Integer airShipment) {
this.airShipment = airShipment;
this.getOrderDesc();
}
public void setShipmentState(Integer shipmentState) {
this.shipmentState = shipmentState;
this.getOrderDesc();
}
public void setPickState(Integer pickState) {
this.pickState = pickState;
if (Objects.nonNull(pickState) && pickState > 0) {
// 当提货状态不未空时,判断提货状态是否需要转化为对应的原有主状态中的提货状态
this.status = pickState == 1 ? 21 : 20;
Integer lang = Objects.nonNull(this.lang) ? this.lang : I18nMessage.getLang();
this.statusText = lang == 0 ? OrderStatusEnum.valueOf(this.status).getNameZh() : OrderStatusEnum.valueOf(this.status).getNameEn();
}
this.getOrderDesc();
}
public void setAuditType(Integer auditType) {
this.auditType = auditType;
this.getOrderDesc();
}
public void setAuditResult(String auditResult) {
this.auditResult = auditResult;
this.getOrderDesc();
}
public void setLang(Integer lang) {
this.lang = lang;
if (StringUtils.isNotBlank(this.exceptionReason) && Objects.nonNull(lang)) {
this.remindExceptionDtoList = JSONObject.parseArray(this.exceptionReason, OrderRemindExceptionDto.class)
.stream()
.peek(ern -> ern.setReason(lang == 0 ? I18nMessage.getZhMessage(ern.getReason()) : I18nMessage.getEnMessage(ern.getReason())))
.collect(Collectors.toList());
}
this.getOrderDesc();
}
public void setExceptionReason(String exceptionReason) {
this.exceptionReason = exceptionReason;
if (StringUtils.isNotBlank(exceptionReason) && Objects.nonNull(this.lang)) {
this.remindExceptionDtoList = JSONObject.parseArray(exceptionReason, OrderRemindExceptionDto.class)
.stream()
.peek(ern -> ern.setReason(lang == 0 ? I18nMessage.getZhMessage(ern.getReason()) : I18nMessage.getEnMessage(ern.getReason())))
.collect(Collectors.toList());
}
this.getOrderDesc();
}
private void getOrderDesc() {
// TODO 这里的文案国际化现在只支持两种语言,如果需要支持更多的语言,需要优化
Integer lang = Objects.nonNull(this.lang) ? this.lang : I18nMessage.getLang();
if (null != this.status && this.status.equals(OrderStatusEnum.CANCEL.getValue()) && this.userType != null) {
String message = this.userType == 2 ? OrderStatusMsgEnum.CANCEL.getAdminSourceName() : OrderStatusMsgEnum.CANCEL.getCustomerSourceName();
this.statusMsg = lang == 0 ? I18nMessage.getZhMessage(message) : I18nMessage.getEnMessage(message);
} else if (null != this.abnormalState && this.abnormalState > 0) {
this.statusKey = 10000;
OrderAbnormalStateEnum abnormalStateEnum = OrderAbnormalStateEnum.valueOf(abnormalState);
if (Objects.isNull(abnormalStateEnum)) {
this.statusMsg = lang == 0 ? "未知异常" : "UNKNOWN_EXCEPTION";
} else {
this.statusMsg = lang == 0 ? I18nMessage.getZhMessage(abnormalStateEnum.getDesc()) : I18nMessage.getEnMessage(abnormalStateEnum.getDesc());
}
} else if (StringUtils.isNotBlank(this.auditResult)) {
this.statusMsg = lang == 0 ? I18nMessage.getZhMessage(auditResult) : I18nMessage.getEnMessage(auditResult);
} else if (CollectionUtil.isNotEmpty(this.remindExceptionDtoList) && this.remindExceptionDtoList.size() > 0) {
this.statusMsg = remindExceptionDtoList.get(0).getReason();
} else if (null != this.status && this.status == 5
&& CollectionUtil.isNotEmpty(this.guanLianOrderStatusVOList)) {
// 已入仓的订单才展示关联异常信息
// 如果查询返回了关联订单状态,表示需要显示关联订单状态,关联订单状态冗余的是国际化key值
// 排序
this.guanLianOrderStatusVOList = this.guanLianOrderStatusVOList.stream().sorted(Comparator.comparing(GuanLianOrderStatusVO::getType)).collect(Collectors.toList());
GuanLianOrderStatusVO guanlianOrderStatusVO = guanLianOrderStatusVOList.get(0);
switch (guanlianOrderStatusVO.getType()) {
case 1:
// 关联异常状态封装,订单状态显示“关联单#订单号#,#异常名称#”Associated order %s, %s
String abnormalMsg = lang == 0 ? I18nMessage.getZhMessage("guanlian.order.abnormalState") : I18nMessage.getEnMessage("guanlian.order.abnormalState");
this.statusMsg = String.format(abnormalMsg, guanlianOrderStatusVO.getOrderNo(), I18nMessage.getMessage(guanlianOrderStatusVO.getStatusMsg()));
break;
case 2:
// 关联审批状态封装,订单状态显示“关联单#订单号##审核状态#”
String auditMsg = lang == 0 ? I18nMessage.getZhMessage("guanlian.order.audit") : I18nMessage.getEnMessage("guanlian.order.audit");
this.statusMsg = String.format(auditMsg, guanlianOrderStatusVO.getOrderNo(), I18nMessage.getMessage(guanlianOrderStatusVO.getStatusMsg()));
break;
case 3:
// 关联未入仓状态封装,订单状态显示“关联单#订单号#未入仓”
String waitWarehouseInMsg = lang == 0 ? I18nMessage.getZhMessage(guanlianOrderStatusVO.getStatusMsg()) : I18nMessage.getEnMessage(guanlianOrderStatusVO.getStatusMsg());
this.statusMsg = String.format(waitWarehouseInMsg, guanlianOrderStatusVO.getOrderNo());
break;
default:
this.statusMsg = lang == 0 ? I18nMessage.getZhMessage(guanlianOrderStatusVO.getStatusMsg()) : I18nMessage.getEnMessage(guanlianOrderStatusVO.getStatusMsg());
}
} else if (null != this.status && null != this.inWarehouseState &&
null != this.shipmentState && null != this.airShipment &&
null != this.transportId) {
this.statusMsg = OrderStatusMsgEnum.getMsg(this.pickState, this.status,
this.inWarehouseState, this.shipmentState,
this.airShipment, this.transportId,
this.userType, lang);
// this.statusKey = OrderStatusMsgEnum.getStatusKey(this.status, this.inWarehouseState, this.shipmentState);
}
}
public String getCost() {
return cost;
}
public void setCost(String cost) {
this.cost = cost;
if (StringUtils.isNotBlank(cost)) {
this.costVO = JSONObject.parseObject(this.cost, CostVO.class);
}
}
public void setCostVO(CostVO costVO) {
this.costVO = costVO;
this.cost = JSONObject.toJSONString(costVO);
}
public CostVO getCostVO() {
return JSONObject.parseObject(this.cost, CostVO.class);
}
}
......@@ -661,6 +661,9 @@ public class OrderQueryVO {
@ApiModelProperty(value = "付款人: 1 发货人 2 收货人 3 自定义")
private List<Integer> draweeList;
@ApiModelProperty(value = "是否特价")
private Boolean specialPriceType;
// @ApiModelProperty(value = "动态查询订单异常状态(字典 order_abnormal_state)")
// private List<Integer> dynamicAbnormalStateList;
//
......@@ -689,6 +692,9 @@ public class OrderQueryVO {
@ApiModelProperty(value = "是否有收货人")
private Boolean hasConsignee;
@ApiModelProperty(value = "出货id")
private Long shipmentId;
public void setStatus(Integer status) {
this.status = status;
this.asStatus = status;
......
......@@ -8,6 +8,7 @@ import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -476,6 +477,14 @@ public class OrderItemBackVO {
@ApiModelProperty(value = "最后清关费单价变更时间")
private Date lastClearanceChargePriceTime;
@ApiModelProperty(value = "最早入仓时间")
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date firstInTime;
@ApiModelProperty(value = "最后入仓时间")
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date lastInTime;
/**
* 到仓信息json
*/
......
......@@ -7,6 +7,207 @@
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
-->
<resultMap id="shipmentOrderMarkupVO" type="cn.iocoder.yudao.module.order.vo.order.OrderMarkupVO">
<result column="order_id" jdbcType="BIGINT" property="orderId"/>
<result column="order_no" jdbcType="VARCHAR" property="orderNo"/>
<result column="marks" jdbcType="VARCHAR" property="marks"/>
<result column="tidan_no" jdbcType="VARCHAR" property="tidanNo"/>
<result column="initial_parent_order_id" jdbcType="BIGINT" property="initialParentOrderId"/>
<result column="initial_parent_order_no" jdbcType="BIGINT" property="initialParentOrderNo"/>
<result column="parent_order_id" jdbcType="BIGINT" property="parentOrderId"/>
<result column="parent_number" jdbcType="VARCHAR" property="parentNumber"/>
<result column="order_type" jdbcType="INTEGER" property="orderType"/>
<result column="package_type" jdbcType="VARCHAR" property="advanceType"/>
<result column="type" jdbcType="VARCHAR" property="type"/>
<result column="air_shipment" jdbcType="INTEGER" property="airShipment"/>
<result column="w_volume" jdbcType="DECIMAL" property="wVolume"/>
<result column="v_weight" jdbcType="DECIMAL" property="vWeight"/>
<result column="customs_type" jdbcType="INTEGER" property="customsType"/>
<result column="cost" jdbcType="VARCHAR" property="cost"/>
<result column="departure_name" jdbcType="VARCHAR" property="departureName"/>
<result column="departure_id" jdbcType="BIGINT" property="departureId"/>
<result column="objective_name" jdbcType="VARCHAR" property="objectiveName"/>
<result column="objective_id" jdbcType="BIGINT" property="objectiveId"/>
<result column="adjust_to_start_warehouse_id" jdbcType="BIGINT" property="adjustToStartWarehouseId"/>
<result column="adjust_to_start_warehouse_name" jdbcType="VARCHAR" property="adjustToStartWarehouseName"/>
<result column="adjust_to_dest_warehouse_id" jdbcType="BIGINT" property="adjustToDestWarehouseId"/>
<result column="adjust_to_dest_warehouse_name" jdbcType="VARCHAR" property="adjustToDestWarehouseName"/>
<result column="dest_adjust_to_start_warehouse_id" jdbcType="BIGINT" property="destAdjustToStartWarehouseId"/>
<result column="dest_adjust_to_start_warehouse_name" jdbcType="VARCHAR" property="destAdjustToStartWarehouseName"/>
<result column="dest_adjust_to_dest_warehouse_id" jdbcType="BIGINT" property="destAdjustToDestWarehouseId"/>
<result column="dest_adjust_to_dest_warehouse_name" jdbcType="VARCHAR" property="destAdjustToDestWarehouseName"/>
<result column="start_warehouse_id" jdbcType="BIGINT" property="startWarehouseId"/>
<result column="start_warehouse_name" jdbcType="VARCHAR" property="startWarehouseName"/>
<result column="dst_warehouse_id" jdbcType="BIGINT" property="dstWarehouseId"/>
<result column="dst_warehouse_name" jdbcType="VARCHAR" property="dstWarehouseName"/>
<result column="salesman_id" jdbcType="BIGINT" property="salesmanId"/>
<result column="status" jdbcType="INTEGER" property="status"/>
<result column="abnormal_state" jdbcType="INTEGER" property="abnormalState"/>
<result column="in_warehouse_state" jdbcType="INTEGER" property="inWarehouseState"/>
<result column="shipment_state" jdbcType="INTEGER" property="shipmentState"/>
<result column="pick_state" jdbcType="INTEGER" property="pickState"/>
<result column="audit_type" jdbcType="INTEGER" property="auditType"/>
<result column="audit_result" jdbcType="VARCHAR" property="auditResult"/>
<result column="guan_lian_order_status" jdbcType="VARCHAR" property="guanLianOrderStatus"/>
<result column="transport_id" jdbcType="INTEGER" property="transportId"/>
<result column="is_cargo_control" jdbcType="BIT" property="isCargoControl"/>
<result column="cargo_control_status" jdbcType="INTEGER" property="cargoControlStatus"/>
<result column="total_num" jdbcType="INTEGER" property="totalNum"/>
<result column="sum_num" jdbcType="INTEGER" property="sumNum"/>
<result column="sum_quantity" jdbcType="INTEGER" property="sumQuantity"/>
<result column="sum_volume" jdbcType="DECIMAL" property="sumVolume"/>
<result column="sum_weight" jdbcType="DECIMAL" property="sumWeight"/>
<result column="check_num" jdbcType="INTEGER" property="checkNum"/>
<result column="check_quantity" jdbcType="INTEGER" property="checkQuantity"/>
<result column="check_volume" jdbcType="DECIMAL" property="checkVolume"/>
<result column="check_weight" jdbcType="DECIMAL" property="checkWeight"/>
<result column="sum_weight_finished_warehouse_in" jdbcType="DECIMAL" property="sumWeightFinishedWarehouseIn"/>
<result column="sum_volume_finished_warehouse_in" jdbcType="DECIMAL" property="sumVolumeFinishedWarehouseIn"/>
<result column="is_external_warehouse" jdbcType="BIT" property="isExternalWarehouse"/>
<result column="exception_reason" jdbcType="VARCHAR" property="exceptionReason"/>
<result column="is_exception" jdbcType="BIT" property="isException"/>
<result column="create_time" jdbcType="DATE" property="createTime"/>
<result column="load_time" jdbcType="DATE" property="loadTime"/>
<result column="unload_time" jdbcType="DATE" property="unloadTime"/>
<result column="customer_id" jdbcType="BIGINT" property="customerId"/>
<result column="salesman_name" jdbcType="VARCHAR" property="salesmanName"/>
<result column="user_type" jdbcType="INTEGER" property="userType"/>
<result column="consignor_customer_id" jdbcType="BIGINT" property="consignorCustomerId"/>
<result column="consignor_follow_customerService" jdbcType="BIGINT" property="consignorFollowCustomerService"/>
<result column="consignor_customer_number" jdbcType="VARCHAR" property="consignorCustomerNumber"/>
<result column="consignor_name" jdbcType="VARCHAR" property="consignorName"/>
<result column="consignor_name_en" jdbcType="VARCHAR" property="consignorNameEn"/>
<result column="consignor_phone" jdbcType="VARCHAR" property="consignorPhone"/>
<result column="consignor_country_code" jdbcType="VARCHAR" property="consignorCountryCode"/>
<result column="consignee_customer_id" jdbcType="BIGINT" property="consigneeCustomerId"/>
<result column="consignee_follow_customerService" jdbcType="BIGINT" property="consigneeFollowCustomerService"/>
<result column="consignee_customer_number" jdbcType="VARCHAR" property="consigneeCustomerNumber"/>
<result column="consignee_name" jdbcType="VARCHAR" property="consigneeName"/>
<result column="consignee_name_en" jdbcType="VARCHAR" property="consigneeNameEn"/>
<result column="consignee_phone" jdbcType="VARCHAR" property="consigneePhone"/>
<result column="consignee_country_code" jdbcType="VARCHAR" property="consigneeCountryCode"/>
<result column="channel_name" jdbcType="VARCHAR" property="channelName"/>
<result column="lang" jdbcType="INTEGER" property="lang"/>
<collection property="orderItemBackVOList" ofType="cn.iocoder.yudao.module.order.vo.orderItem.OrderItemBackVO">
<result column="order_item_id" jdbcType="BIGINT" property="orderItemId"/>
<result column="order_id" jdbcType="BIGINT" property="orderId"/>
<result column="order_no" jdbcType="VARCHAR" property="orderNo"/>
<result column="order_item_type" jdbcType="INTEGER" property="orderItemType"/>
<result column="item_type" jdbcType="INTEGER" property="itemType"/>
<result column="transport_id" jdbcType="BIGINT" property="transportId"/>
<result column="line_id" jdbcType="BIGINT" property="lineId"/>
<result column="channel_id" jdbcType="BIGINT" property="channelId"/>
<result column="item_status" jdbcType="INTEGER" property="itemStatus"/>
<result column="prod_id" jdbcType="BIGINT" property="prodId"/>
<result column="prod_title_zh" jdbcType="VARCHAR" property="prodTitleZh"/>
<result column="prod_title_en" jdbcType="VARCHAR" property="prodTitleEn"/>
<result column="prod_title_fr" jdbcType="VARCHAR" property="prodTitleFr"/>
<result column="link" jdbcType="VARCHAR" property="link"/>
<result column="brand" jdbcType="BIGINT" property="brand"/>
<result column="brand_type" jdbcType="INTEGER" property="brandType"/>
<result column="fee_type" jdbcType="INTEGER" property="feeType"/>
<result column="num" jdbcType="INTEGER" property="num"/>
<result column="unit" jdbcType="VARCHAR" property="unit"/>
<result column="box_gauge" jdbcType="VARCHAR" property="boxGauge"/>
<result column="volume" jdbcType="DECIMAL" property="volume"/>
<result column="weight" jdbcType="DECIMAL" property="weight"/>
<result column="quantity" jdbcType="INTEGER" property="quantity"/>
<result column="worth" jdbcType="DECIMAL" property="worth"/>
<result column="worth_currency" jdbcType="INTEGER" property="worthCurrency"/>
<result column="prod_attr_ids" jdbcType="VARCHAR" property="prodAttrIds"/>
<result column="warehouse_in_prod_attr_ids" jdbcType="VARCHAR" property="warehouseCheckProdAttrIds"/>
<result column="special_price_type" jdbcType="BIT" property="specialPriceType"/>
<result column="split_custom_price_type" jdbcType="BIT" property="splitCustomPriceType"/>
<result column="one_sea_freight" jdbcType="DECIMAL" property="oneSeaFreight"/>
<result column="sea_freight" jdbcType="DECIMAL" property="seaFreight"/>
<result column="original_sea_freight" jdbcType="DECIMAL" property="originalSeaFreight"/>
<result column="sea_freight_currency" jdbcType="INTEGER" property="seaFreightCurrency"/>
<result column="sea_freight_volume" jdbcType="BIGINT" property="seaFreightVolume"/>
<result column="one_clearance_freight" jdbcType="DECIMAL" property="oneClearanceFreight"/>
<result column="clearance_freight" jdbcType="DECIMAL" property="clearanceFreight"/>
<result column="original_clearance_freight" jdbcType="DECIMAL" property="originalClearanceFreight"/>
<result column="clearance_freight_currency" jdbcType="INTEGER" property="clearanceFreightCurrency"/>
<result column="clearance_freight_volume" jdbcType="INTEGER" property="clearanceFreightVolume"/>
<result column="oi_create_time" jdbcType="DATE" property="createTime"/>
<result column="oi_update_time" jdbcType="DATE" property="updateTime"/>
<result column="charging" jdbcType="INTEGER" property="charging"/>
<result column="is_pay_advance" jdbcType="INTEGER" property="isPayAdvance"/>
<result column="warehouse_in_info" jdbcType="VARCHAR" property="warehouseCheckInfo"/>
<result column="is_warehouse_in_add" jdbcType="BIT" property="isWarehouseInAdd"/>
<result column="material" jdbcType="VARCHAR" property="material"/>
<result column="result" jdbcType="VARCHAR" property="result"/>
<result column="result_status" jdbcType="VARCHAR" property="resultStatus"/>
<result column="express_no" jdbcType="VARCHAR" property="expressNo"/>
<result column="commission_type" jdbcType="INTEGER" property="commissionType"/>
<result column="plain_commission" jdbcType="DECIMAL" property="plainCommission"/>
<result column="hidden_commission" jdbcType="DECIMAL" property="hiddenCommission"/>
<result column="w_volume" jdbcType="DECIMAL" property="wVolume"/>
<result column="v_weight" jdbcType="DECIMAL" property="vWeight"/>
<result column="weight_unit" jdbcType="DECIMAL" property="weightUnit"/>
<result column="volume_unit" jdbcType="DECIMAL" property="volumeUnit"/>
<result column="discount_clearance_fee_price" jdbcType="DECIMAL" property="discountClearanceFeePrice"/>
<result column="discount_clearance_fee_total_price" jdbcType="DECIMAL" property="discountClearanceFeeTotalPrice"/>
<result column="discount_freight_price" jdbcType="DECIMAL" property="discountFreightPrice"/>
<result column="discount_freight_total_price" jdbcType="DECIMAL" property="discountFreightTotalPrice"/>
<result column="is_priced" jdbcType="BIT" property="isPriced"/>
<result column="liquid_clearance_fee_price" jdbcType="DECIMAL" property="liquidClearanceFeePrice"/>
<result column="liquid_freight_price" jdbcType="DECIMAL" property="liquidFreightPrice"/>
<result column="electrified_clearance_fee_price" jdbcType="DECIMAL" property="electrifiedClearanceFeePrice"/>
<result column="electrified_freight_price" jdbcType="DECIMAL" property="electrifiedFreightPrice"/>
<result column="brand_clearance_fee_price" jdbcType="DECIMAL" property="brandClearanceFeePrice"/>
<result column="brand_freight_price" jdbcType="DECIMAL" property="brandFreightPrice"/>
<result column="packaging_clearance_fee_price" jdbcType="DECIMAL" property="packagingClearanceFeePrice"/>
<result column="packaging_freight_price" jdbcType="DECIMAL" property="packagingFreightPrice"/>
<result column="special_commission" jdbcType="BIT" property="specialCommission"/>
<result column="coupon_info" jdbcType="VARCHAR" property="couponInfo"/>
<result column="min_metering_weight" jdbcType="DECIMAL" property="minMeteringWeight"/>
<result column="min_metering_volume" jdbcType="DECIMAL" property="minMeteringVolume"/>
<result column="min_metering_quantity" jdbcType="DECIMAL" property="minMeteringQuantity"/>
<result column="volume_ratio" jdbcType="DECIMAL" property="volumeRatio"/>
<result column="charge_weight" jdbcType="DECIMAL" property="chargeWeight"/>
<result column="charge_volume" jdbcType="DECIMAL" property="chargeVolume"/>
<result column="charge_quantity" jdbcType="DECIMAL" property="chargeQuantity"/>
<result column="weight_ratio" jdbcType="DECIMAL" property="weightRatio"/>
<result column="org_item_id" jdbcType="BIGINT" property="orgItemId"/>
<result column="org_charge_num" jdbcType="INTEGER" property="orgChargeNum"/>
<result column="org_charge_quantity" jdbcType="DECIMAL" property="orgChargeQuantity"/>
<result column="org_charge_weight" jdbcType="DECIMAL" property="orgChargeWeight"/>
<result column="org_charge_volume" jdbcType="DECIMAL" property="orgChargeVolume"/>
<result column="receivable_sea_freight" jdbcType="DECIMAL" property="receivableSeaFreight"/>
<result column="receivable_clearance_freight" jdbcType="DECIMAL" property="receivableClearanceFreight"/>
<result column="old_one_sea_freight" jdbcType="DECIMAL" property="oldOneSeaFreight"/>
<result column="old_one_clearance_freight" jdbcType="DECIMAL" property="oldOneClearanceFreight"/>
<result column="channel_manual_pricing" jdbcType="BIT" property="channelManualPricing"/>
<result column="markup_sea_freight" jdbcType="DECIMAL" property="markupSeaFreight"/>
<result column="markup_clearance_freight" jdbcType="DECIMAL" property="markupClearanceFreight"/>
<result column="air_clearance_source" jdbcType="INTEGER" property="airClearanceSource"/>
<result column="air_clearance_info" jdbcType="VARCHAR" property="airClearanceInfo"/>
<result column="need_order_inquiry" jdbcType="INTEGER" property="needOrderInquiry"/>
<result column="is_handler_order_inquiry_exception" jdbcType="BIT" property="isHandlerOrderInquiryException"/>
<result column="usage_ids" jdbcType="VARCHAR" property="usageIds"/>
<result column="handler_channel_attr_exception" jdbcType="BIT" property="handlerChannelAttrException"/>
<result column="check_material" jdbcType="VARCHAR" property="checkMaterial"/>
<result column="warehouse_check_prod_attr_ids" jdbcType="VARCHAR" property="warehouseCheckProdAttrIds"/>
<result column="check_brand" jdbcType="BIGINT" property="checkBrand"/>
<result column="check_brand_name" jdbcType="VARCHAR" property="checkBrandName"/>
<result column="check_brand_type" jdbcType="INTEGER" property="checkBrandType"/>
<result column="warehouse_check_info" jdbcType="VARCHAR" property="warehouseCheckInfo"/>
<result column="check_prod_id" jdbcType="BIGINT" property="checkProdId"/>
<result column="check_prod_type" jdbcType="INTEGER" property="checkProdType"/>
<result column="check_prod_title_zh" jdbcType="VARCHAR" property="checkProdTitleZh"/>
<result column="check_prod_title_en" jdbcType="VARCHAR" property="checkProdTitleEn"/>
<result column="check_prod_title_fr" jdbcType="VARCHAR" property="checkProdTitleFr"/>
<result column="last_freight_charge_price_time" jdbcType="DATE" property="lastFreightChargePriceTime"/>
<result column="last_clearance_charge_price_time" jdbcType="DATE" property="lastClearanceChargePriceTime"/>
<result column="first_in_time" jdbcType="DATE" property="firstInTime"/>
<result column="last_in_time" jdbcType="DATE" property="lastInTime"/>
<result column="vo_weight" jdbcType="DECIMAL" property="voWeight"/>
<result column="we_volume" jdbcType="DECIMAL" property="weVolume"/>
<result column="after_discount_sea_freight" jdbcType="DECIMAL" property="afterDiscountSeaFreight"/>
<result column="after_discount_clearance_freight" jdbcType="DECIMAL" property="afterDiscountClearanceFreight"/>
</collection>
</resultMap>
<select id="getOrderListByIds" resultType="cn.iocoder.yudao.module.order.vo.order.OrderBackPageVO">
select
t1.offer_id as offerId,
......@@ -3608,6 +3809,24 @@
<if test="query.isNeat == false ">
AND o.sum_num <![CDATA[ < ]]> o.cost->>'$.totalNum'
</if>
<if test="query.specialPriceType != null and query.specialPriceType == false">
item.getSpecialPriceType() || item.getSplitCustomPriceType() || item.getSpecialCommission() || item.getChannelManualPricing()
AND o.order_id not in(
select
it.order_id
from ecw_order_item it
where it.order_id = o.order_id
and (it.special_price_type = true or it.split_custom_price_type = true or it.special_commission = true or it.channel_manual_pricing = true))
</if>
<if test="query.specialPriceType != null and query.specialPriceType == true">
item.getSpecialPriceType() || item.getSplitCustomPriceType() || item.getSpecialCommission() || item.getChannelManualPricing()
AND o.order_id in(
select
it.order_id
from ecw_order_item it
where it.order_id = o.order_id
and (it.special_price_type = true or it.split_custom_price_type = true or it.special_commission = true or it.channel_manual_pricing = true))
</if>
<if test="query.airShipmentList != null and query.airShipmentList.size() > 0">
<if test="query.airShipmentList.size() == 1">
<foreach item='airShipment' index="index" collection='query.airShipmentList'>
......@@ -7792,4 +8011,156 @@
wi.`update_time` between #{query.beginWarehouseInTime} and #{query.endWarehouseInTime})
</if>
</sql>
<select id="shipmentBatchMarkupOrderList" resultMap="shipmentOrderMarkupVO">
select o.order_id,
o.package_type as advance_type,
o.package_remarks,
o.number,
o.order_no,
o.tidan_no,
o.type,
o.order_type,
o.air_shipment,
IFNULL((select SUM(IF(it.charge_volume > it.min_metering_volume, it.charge_volume, it.min_metering_volume)) FROM
ecw_order_item it WHERE it.order_id = o.order_id and it.deleted = 0 and it.warehouse_in_info IS NOT NULL), 0) as
w_volume,
IFNULL((select SUM(IF( it.charge_weight > it.min_metering_weight, it.charge_weight, it.min_metering_weight))
FROM ecw_order_item it WHERE it.order_id = o.order_id and it.deleted = 0 and it.warehouse_in_info IS NOT NULL),
0) as v_weight,
o.customs_type,
o.cost,
o.parent_number,
o.parent_order_id,
o.initial_parent_order_id,
if(#{query.lang} = 0, de.departure ->> '$.titleZh', de.departure ->> '$.titleEn') as departure_name,
if(#{query.lang} = 0, ob.objective ->> '$.titleZh', ob.objective ->> '$.titleEn') as objective_name,
de.departure_id,
ob.objective_id,
o.adjust_to_start_warehouse_id,
(SELECT IF(0 = 0, ew_start_adjust.title_zh, ew_start_adjust.title_en) FROM ecw_warehouse ew_start_adjust WHERE
ew_start_adjust.id = o.adjust_to_start_warehouse_id) AS adjust_to_start_warehouse_name,
o.adjust_to_dest_warehouse_id,
(SELECT IF(0 = 0, ew_dest_adjust.title_zh, ew_dest_adjust.title_en) FROM ecw_warehouse ew_dest_adjust WHERE
ew_dest_adjust.id = o.adjust_to_dest_warehouse_id) AS adjust_to_dest_warehouse_name,
o.dest_adjust_to_start_warehouse_id,
(SELECT IF(0 = 0, ew_start_adjust.title_zh, ew_start_adjust.title_en) FROM ecw_warehouse ew_start_adjust WHERE
ew_start_adjust.id = o.dest_adjust_to_start_warehouse_id) AS dest_adjust_to_start_warehouse_name,
o.dest_adjust_to_dest_warehouse_id,
(SELECT IF(0 = 0, ew_dest_adjust.title_zh, ew_dest_adjust.title_en) FROM ecw_warehouse ew_dest_adjust WHERE
ew_dest_adjust.id = o.dest_adjust_to_dest_warehouse_id) AS dest_adjust_to_dest_warehouse_name,
w.start_warehouse_name,
w.dst_warehouse_name,
w.start_warehouse_id,
w.dst_warehouse_id,
o.marks,
o.salesman_id,
o.status,
o.abnormal_state,
o.in_warehouse_state,
o.shipment_state,
o.pick_state,
o.audit_type,
o.audit_result,
o.guan_lian_order_status,
o.transport_id,
o.is_cargo_control,
o.cargo_control_status,
o.cost ->> '$.totalNum' as total_num,
o.pick_state,
o.sum_num,
o.sum_volume,
o.sum_weight,
o.check_num,
o.check_volume,
o.check_weight,
o.sum_weight_finished_warehouse_in,
o.sum_volume_finished_warehouse_in,
o.packing_list_url,
o.is_external_warehouse,
o.exception_reason,
o.is_exception,
o.create_time,
o.load_time,
o.unload_time,
o.customer_id,
(select su.nickname from system_user su where su.deleted = 0 and su.id = o.salesman_id) as salesman_name,
if(#{query.userType} = 1, 1, 2) as user_type,
nor.customer_id as consignor_customer_id,
if(nor.customer_id is not null and nor.customer_id > 0,
(SELECT u1.nickname FROM system_user u1 JOIN system_user u2 on u1.id = u2.customer_service_id JOIN ecw_customer u ON u.customer_service = u2.id WHERE u.id = nor.customer_id),
"") as consignor_follow_customerService,
nor.customer_number as consignor_customer_number,
nor.name as consignor_name,
nor.name_en as consignor_name_en,
nor.phone as consignor_phone,
nor.country_code as consignor_country_code,
nee.customer_id as consignee_customer_id,
if(nee.customer_id is not null and nee.customer_id > 0,
(SELECT u1.nickname FROM system_user u1 JOIN system_user u2 on u1.id = u2.customer_service_id JOIN ecw_customer u ON u.customer_service = u2.id WHERE u.id = nee.customer_id),
"") as consignee_follow_customerService,
nee.customer_number as consignee_customer_number,
nee.name as consignee_name,
nee.name_en as consignee_name_en,
nee.phone as consignee_phone,
nee.country_code as consignee_country_code,
if(#{query.lang} = 0, channel.name_zh, channel.name_en) as channel_name,
o.update_time,
c.name as customer_name,
c.customer_service,
su.nickname as customer_service_name,
oi.*,
oi.create_time as oi_create_time,
oi.update_time as oi_update_time,
(select min(wi.`in_time`) from ecw_order_warehouse_in wi where wi.deleted = 0 and wi.order_id = oi.order_item_id ) as
first_in_time,
(select max(wi.`in_time`) from ecw_order_warehouse_in wi where wi.deleted = 0 and wi.order_id = oi.order_item_id ) as
last_in_time,
(oi.original_sea_freight + oi.packaging_freight_price + oi.brand_freight_price + oi.electrified_freight_price + oi.liquid_freight_price + oi.plain_commission - oi.discount_freight_price ) as after_discount_sea_freight,
(oi.original_clearance_freight + oi.packaging_freight_price + oi.brand_clearance_fee_price + oi.electrified_clearance_fee_price + oi.liquid_clearance_fee_price - oi.discount_clearance_fee_price) as after_discount_clearance_freight,
IF(o.order_type != 2 and (SELECT COUNT(1) FROM ecw_order_exception hoe WHERE hoe.order_id = o.order_id AND hoe.deleted = 0 AND hoe.order_exception_status = 0 AND hoe.order_exception_type ='order_heavy_cargo_exception') = 0, IFNULL(oi.warehouse_in_info ->> '$.volume', oi.volume), oi.w_volume ) as we_volume,
IF(o.order_type != 3 and (SELECT COUNT(1) FROM ecw_order_exception boe WHERE boe.order_id = o.order_id AND boe.deleted = 0 AND boe.order_exception_status = 0 AND boe.order_exception_type ='order_bulky_cargo_exception') = 0, IFNULL(oi.warehouse_in_info ->> '$.weight', oi.weight), oi.v_weight ) as vo_weight,
CASE #{query.lang}
WHEN 0 THEN pd.title_zh
WHEN 1 THEN pd.title_en
WHEN 2 THEN pd.title_fr
ELSE pd.title_zh
END as brand_name ,
CASE #{query.lang}
WHEN 0 THEN pdc.title_zh
WHEN 1 THEN pdc.title_en
WHEN 2 THEN pdc.title_fr
ELSE pdc.title_zh
END as check_brand ,
#{query.lang} as lang
from ecw_order o
left join ecw_order_item oi on oi.order_id = o.order_id
left join ecw_product_brank pd on pd.id = oi.brand
left join ecw_product_brank pdc on pdc.id = oi.check_brand
left join ecw_customer c on o.customer_id = c.id
left join system_user su on su.id = c.customer_service
left join (
SELECT
ewl.id AS line_id,
ew_start.id AS start_warehouse_id,
ew_dest.id AS dst_warehouse_id,
ew_start.title_zh AS start_title_zh,
IF( #{query.lang} = 0, ew_dest.title_zh, ew_dest.title_en ) AS dst_warehouse_name,
IF( #{query.lang} = 0, ew_start.title_zh, ew_start.title_en ) AS start_warehouse_name
FROM
ecw_warehouse_line ewl
LEFT JOIN ecw_warehouse ew_start ON ewl.start_warehouse_id = ew_start.id
LEFT JOIN ecw_warehouse ew_dest ON ewl.dest_warehouse_id = ew_dest.id
) w ON w.line_id = o.line_id
left join ecw_order_departure de on de.order_id = o.order_id
left join ecw_order_objective ob on ob.order_id = o.order_id
left join ecw_order_consignor nor on nor.order_id = o.order_id and nor.deleted = 0
left join ecw_order_consignee nee on nee.order_id = o.order_id and nee.deleted = 0
left join ecw_channel channel on channel.channel_id = o.channel_id
where o.deleted = 0 and o.in_warehouse_state != 211 and o.in_warehouse_state != 208 and o.status != 10
<include refid="orderQuery"/>
GROUP BY o.order_id
order by o.order_id desc
</select>
</mapper>
......@@ -13,6 +13,8 @@ import cn.iocoder.yudao.module.order.enums.OrderApprovalTypeEnum;
import cn.iocoder.yudao.module.order.enums.OrderSeaTimeEnum;
import cn.iocoder.yudao.module.order.enums.TargetLogEnum;
import cn.iocoder.yudao.module.order.vo.order.OrderBackPageVO;
import cn.iocoder.yudao.module.order.vo.order.OrderMarkupVO;
import cn.iocoder.yudao.module.order.vo.order.OrderQueryVO;
import cn.iocoder.yudao.module.order.vo.orderSplit.OrderSplitApplyDetailDto;
import cn.iocoder.yudao.module.order.vo.orderSplit.OrderSplitBackVO;
import cn.iocoder.yudao.module.product.dal.dataobject.product.ProductPriceDO;
......@@ -817,4 +819,6 @@ public interface BoxService extends IService<BoxDO> {
* @param shipmentId 出货单ID
*/
void clearUnloadCabinet(Long shipmentId);
List<OrderMarkupVO> shipmentBatchMarkupOrderList(OrderQueryVO query);
}
......@@ -77,6 +77,7 @@ import cn.iocoder.yudao.module.order.service.orderSplit.OrderSplitService;
import cn.iocoder.yudao.module.order.service.targetLog.TargetLogService;
import cn.iocoder.yudao.module.order.vo.order.OrderBackPageVO;
import cn.iocoder.yudao.module.order.vo.order.OrderBackVO;
import cn.iocoder.yudao.module.order.vo.order.OrderMarkupVO;
import cn.iocoder.yudao.module.order.vo.order.OrderQueryVO;
import cn.iocoder.yudao.module.order.vo.orderConsignee.OrderConsigneeBackVO;
import cn.iocoder.yudao.module.order.vo.orderConsignor.OrderConsignorBackVO;
......@@ -5593,4 +5594,10 @@ public class BoxServiceImpl extends AbstractService<BoxMapper, BoxDO> implements
.set(BoxLoadInfoDO::getIsUnload, 0)
);
}
@Override
public List<OrderMarkupVO> shipmentBatchMarkupOrderList(OrderQueryVO query) {
return orderQueryService.shipmentBatchMarkupOrderList(query);
}
}
......@@ -10,6 +10,8 @@ import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import cn.iocoder.yudao.framework.redis.helper.RedisHelper;
import cn.iocoder.yudao.module.order.vo.order.OrderBackPageVO;
import cn.iocoder.yudao.module.order.vo.order.OrderMarkupVO;
import cn.iocoder.yudao.module.order.vo.order.OrderQueryVO;
import cn.iocoder.yudao.module.order.vo.orderSplit.OrderSplitBackVO;
import cn.iocoder.yudao.module.shipment.convert.BoxConvert;
import cn.iocoder.yudao.module.shipment.dal.dataobject.BoxDO;
......@@ -28,6 +30,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
......@@ -40,11 +43,13 @@ import java.io.IOException;
import java.text.MessageFormat;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.module.order.enums.ErrorCodeConstants.PARAM_SHIPMENT_NOT_NULL;
import static cn.iocoder.yudao.module.shipment.controller.admin.constant.Constant.BOX_UPDATE_KEY;
import static cn.iocoder.yudao.module.shipment.enums.ErrorCodeConstants.BOX_UPDATE_REPEAT_COMMIT;
......@@ -282,6 +287,25 @@ public class BoxController {
return success(orderList);
}
@GetMapping("/shipment/batch/markup/order/list")
@ApiOperation("获得批量加价页面出货单订单列表")
public CommonResult<List<OrderMarkupVO>> shipmentBatchMarkupOrderList(OrderQueryVO query) {
if ((query.getShipmentId() == null || query.getShipmentId() == 0L) && StringUtils.isBlank(query.getContainerNumber())) {
return error(PARAM_SHIPMENT_NOT_NULL);
}
if (StringUtils.isBlank(query.getContainerNumber())){
BoxDO boxDO = boxService.getBox(query.getShipmentId());
if (Objects.isNull(boxDO)){
return error(PARAM_SHIPMENT_NOT_NULL);
}
query.setContainerNumber(boxDO.getSelfNo());
}
List<OrderMarkupVO> list = boxService.shipmentBatchMarkupOrderList(query);
return success(list);
}
@GetMapping("/export-excel")
@ApiOperation("导出出货 Excel")
@PreAuthorize("@ss.hasPermission('shipment:box:export')")
......
......@@ -662,6 +662,9 @@ prod.brand.not.null=brand is not null or zero
preload.not.exist=Goods are not pre-loaded in the shipment order
warehouse.in.property.not.null.and.zero=goods [{}] {} cannot be empty and zero.
warehouse.in.box.exception=The order has already been scheduled and warehouse data cannot be manipulated
batch.order.fee.apply.not.exists=Batch order fee application does not exist
batch.order.fee.apply.info.not.exists=Batch order fee application details data does not exist
param.shipment.not.null=Please select the shipping order
order.update.box.exception=The order has been scheduled
split.order.can.not.change.carton.num=Unmodifiable box count for split order
split.order.can.not.change.order.label=Split order cannot change label box number
......
......@@ -662,6 +662,9 @@ prod.brand.not.null=La marque ne peut \u00EAtre vide ou z\u00E9ro
preload.not.exist=Bon de sortie sans marchandise pr\u00E9charg\u00E9e
warehouse.in.property.not.null.and.zero=La valeur de {} pour le produit [{}] ne peut \u00EAtre vide ou \u00E9gale \u00E0 0
warehouse.in.box.exception=Les commandes d\u00E9j\u00E0 planifi\u00E9es ne peuvent pas \u00EAtre modifi\u00E9es dans le syst\u00E8me de stockage
batch.order.fee.apply.not.exists=Demande de frais de commande en gros n'existe pas
batch.order.fee.apply.info.not.exists=Frais de commande en gros détails de la demande données non existantes
param.shipment.not.null=Veuillez sélectionner le bon de sortie
order.update.box.exception=Les commandes sont d\u00E9j\u00E0 list\u00E9es
split.order.can.not.change.carton.num=Le nombre de colis dans une sous-commande ne peut \u00EAtre modifi\u00E9
split.order.can.not.change.order.label=Le num\u00E9ro d'\u00E9tiquette des colis d'une sous-commande ne peut \u00EAtre modifi\u00E9
......
......@@ -671,6 +671,9 @@ prod.brand.not.null=\u54C1\u724C\u4E0D\u80FD\u4E3A\u7A7A\u62160
preload.not.exist=\u51FA\u8D27\u5355\u672A\u9884\u88C5\u8D27\u7269
warehouse.in.property.not.null.and.zero=\u5546\u54C1[{}]\u7684{}\u4E0D\u80FD\u4E3A\u7A7A\u62160
warehouse.in.box.exception=\u8BA2\u5355\u5DF2\u7ECF\u6392\u5355\u4E0D\u80FD\u64CD\u4F5C\u4ED3\u5E93\u6570\u636E
batch.order.fee.apply.not.exists=\u6279\u91cf\u8ba2\u5355\u8d39\u7528\u7533\u8bf7\u4e0d\u5b58\u5728
batch.order.fee.apply.info.not.exists=\u6279\u91cf\u8ba2\u5355\u8d39\u7528\u7533\u8bf7\u8be6\u60c5\u6570\u636e\u4e0d\u5b58\u5728
param.shipment.not.null=\u8bf7\u9009\u62e9\u51fa\u8d27\u5355
order.update.box.exception=\u8BA2\u5355\u5DF2\u7ECF\u6392\u5355
split.order.can.not.change.carton.num=\u62C6\u5355\u8BA2\u5355\u4E0D\u53EF\u6539\u7BB1\u6570
split.order.can.not.change.order.label=\u62C6\u5355\u8BA2\u5355\u4E0D\u53EF\u6539\u6807\u7B7E\u7BB1\u53F7
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment