Commit edf07683 authored by zhangfeng's avatar zhangfeng

Merge remote-tracking branch 'origin/dev' into dev

parents deea0c7f 5c214da5
...@@ -70,5 +70,5 @@ alter table `ecw_order` ...@@ -70,5 +70,5 @@ alter table `ecw_order`
update ecw_order o left join ecw_customer c on c.id = o.customer_id set o.yeji_type = IFNULL(c.is_new, 1); update ecw_order o left join ecw_customer c on c.id = o.customer_id set o.yeji_type = IFNULL(c.is_new, 1);
-- 2027-08-07 仓库路线新增落款信息和图章名称 -- 2027-08-07 仓库路线新增落款信息和图章名称
alter table ecw_warehouse_line add column lk_left varchar(600) COMMENT '左侧落款',add column lk_right varchar(600) COMMENT '右侧落款',add column tz_name varchar(255) COMMENT '图章名称'; alter table ecw_warehouse_line add column lk_left varchar(600) DEFAULT NULL COMMENT '左侧落款',add column lk_right varchar(600) DEFAULT NULL COMMENT '右侧落款',add column tz_name varchar(255) DEFAULT NULL COMMENT '图章名称';
-- 2024-08-24 订单控货现在参数控货订单锁定天数
alter table `ecw_order`
add column `lock_consignee_day` int default 0 COMMENT '锁定收货人天数';
alter table `ecw_order`
add column `lock_consignee_time` datetime default NULL COMMENT '放货锁定收货人到期时间';
alter table `ecw_order`
add column `is_limit_update_consignee` bit default 0 COMMENT '是否限制修改收获人';
\ No newline at end of file
...@@ -72,6 +72,8 @@ public interface WarehouseLineMapper extends BaseMapperX<WarehouseLineDO> { ...@@ -72,6 +72,8 @@ public interface WarehouseLineMapper extends BaseMapperX<WarehouseLineDO> {
"ew_start_country.title_zh as start_country_title_zh,", "ew_start_country.title_zh as start_country_title_zh,",
"ew_start_country.title_en as start_country_title_en,", "ew_start_country.title_en as start_country_title_en,",
"ew_start.volume as start_volume,", "ew_start.volume as start_volume,",
"ew_start.rent_free_days as start_rent_free_days,",
"ew_start.lock_recipient_days as start_lock_recipient_days,",
"ew_start.address_zh as start_address_zh,", "ew_start.address_zh as start_address_zh,",
"ew_start.address_en as start_address_en,", "ew_start.address_en as start_address_en,",
"ew_start.head as start_head,", "ew_start.head as start_head,",
...@@ -85,6 +87,8 @@ public interface WarehouseLineMapper extends BaseMapperX<WarehouseLineDO> { ...@@ -85,6 +87,8 @@ public interface WarehouseLineMapper extends BaseMapperX<WarehouseLineDO> {
"ew_dest_country.title_zh as dest_country_title_zh,", "ew_dest_country.title_zh as dest_country_title_zh,",
"ew_dest_country.title_en as dest_country_title_en,", "ew_dest_country.title_en as dest_country_title_en,",
"ew_dest.volume as dest_volume,", "ew_dest.volume as dest_volume,",
"ew_dest.rent_free_days as dest_rent_free_days,",
"ew_dest.lock_recipient_days as dest_lock_recipient_days,",
"ew_dest.address_zh as dest_address_zh,", "ew_dest.address_zh as dest_address_zh,",
"ew_dest.address_en as dest_address_en,", "ew_dest.address_en as dest_address_en,",
"ew_dest.head as dest_head,", "ew_dest.head as dest_head,",
......
...@@ -35,6 +35,12 @@ public class LogisticsInfoDto { ...@@ -35,6 +35,12 @@ public class LogisticsInfoDto {
@ApiModelProperty(value = "始发地仓库容量") @ApiModelProperty(value = "始发地仓库容量")
private String startVolume; private String startVolume;
@ApiModelProperty(value = "始发地仓库免租期")
private Integer startRentFreeDays;
@ApiModelProperty(value = "始发地锁定收货人天数")
private Integer startLockRecipientDays;
@ApiModelProperty(value = "始发地仓库仓库地址") @ApiModelProperty(value = "始发地仓库仓库地址")
private String startAddressZh; private String startAddressZh;
...@@ -73,6 +79,12 @@ public class LogisticsInfoDto { ...@@ -73,6 +79,12 @@ public class LogisticsInfoDto {
@ApiModelProperty(value = "目的地仓库容量") @ApiModelProperty(value = "目的地仓库容量")
private String destVolume; private String destVolume;
@ApiModelProperty(value = "目的地仓库免租期")
private Integer destRentFreeDays;
@ApiModelProperty(value = "目的地锁定收货人天数")
private Integer destLockRecipientDays;
@ApiModelProperty(value = "目的地仓库仓库地址") @ApiModelProperty(value = "目的地仓库仓库地址")
private String destAddressZh; private String destAddressZh;
......
...@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.order.dal.dataobject.orderDeparture.OrderDepartur ...@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.order.dal.dataobject.orderDeparture.OrderDepartur
import cn.iocoder.yudao.module.order.dal.dataobject.orderItem.OrderItemDO; import cn.iocoder.yudao.module.order.dal.dataobject.orderItem.OrderItemDO;
import cn.iocoder.yudao.module.order.dal.dataobject.orderObjective.OrderObjectiveDO; import cn.iocoder.yudao.module.order.dal.dataobject.orderObjective.OrderObjectiveDO;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.*; import lombok.*;
...@@ -15,10 +16,13 @@ import java.util.*; ...@@ -15,10 +16,13 @@ import java.util.*;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/** /**
* 订单 DO * 订单 DO
* *
...@@ -518,6 +522,17 @@ public class OrderDO extends BaseDO { ...@@ -518,6 +522,17 @@ public class OrderDO extends BaseDO {
@ApiModelProperty(value = "是否有收货人,1-是,0-否") @ApiModelProperty(value = "是否有收货人,1-是,0-否")
private Boolean hasConsignee = true; private Boolean hasConsignee = true;
@ApiModelProperty(value = "是否限制修改收货人")
private Boolean isLimitUpdateConsignee;
@ApiModelProperty(value = "放货锁定收货人到期时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date lockConsigneeTime;
@ApiModelProperty(value = "放货锁定收货人天数")
private Integer lockConsigneeDay;
// //
// @ApiModelProperty(value = "拆单子订单是否变更运输方式") // @ApiModelProperty(value = "拆单子订单是否变更运输方式")
// private Boolean splitChangeTransport = false; // private Boolean splitChangeTransport = false;
......
...@@ -97,6 +97,9 @@ public interface OrderCargoControlMapper extends AbstractMapper<OrderCargoContro ...@@ -97,6 +97,9 @@ public interface OrderCargoControlMapper extends AbstractMapper<OrderCargoContro
"o.sum_volume, ", "o.sum_volume, ",
"o.sum_weight, ", "o.sum_weight, ",
"o.create_time, ", "o.create_time, ",
"o.unload_time, ",
"o.is_limit_update_consignee, ",
"o.lock_consignee_time, ",
"nee.name as consignee_name, ", "nee.name as consignee_name, ",
"nee.name_en as consignee_name_en, ", "nee.name_en as consignee_name_en, ",
"nee.phone as consignee_phone, ", "nee.phone as consignee_phone, ",
...@@ -108,7 +111,6 @@ public interface OrderCargoControlMapper extends AbstractMapper<OrderCargoContro ...@@ -108,7 +111,6 @@ public interface OrderCargoControlMapper extends AbstractMapper<OrderCargoContro
"occ.email, ", "occ.email, ",
"occ.dial_code ", "occ.dial_code ",
"from ecw_order o ", "from ecw_order o ",
// "left join ecw_order_consignor nor on nor.order_id = o.order_id ",
"left join ecw_order_consignee nee on nee.order_id = o.order_id ", "left join ecw_order_consignee nee on nee.order_id = o.order_id ",
"left join ecw_order_cargo_control occ ", "left join ecw_order_cargo_control occ ",
"on occ.order_id = o.order_id and occ.is_actual = 1 and occ.deleted = 0", "on occ.order_id = o.order_id and occ.is_actual = 1 and occ.deleted = 0",
......
...@@ -3,13 +3,18 @@ package cn.iocoder.yudao.module.order.dto; ...@@ -3,13 +3,18 @@ package cn.iocoder.yudao.module.order.dto;
import cn.iocoder.yudao.module.order.vo.approval.OrderApprovalBackVO; import cn.iocoder.yudao.module.order.vo.approval.OrderApprovalBackVO;
import cn.iocoder.yudao.module.order.vo.orderCargoControlPick.OrderCargoControlPickBackVO; import cn.iocoder.yudao.module.order.vo.orderCargoControlPick.OrderCargoControlPickBackVO;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Data @Data
@ApiModel(value = "控货订单放货详情返回值") @ApiModel(value = "控货订单放货详情返回值")
public class OrderCargoControlReleaseInfoDto { public class OrderCargoControlReleaseInfoDto {
...@@ -106,6 +111,22 @@ public class OrderCargoControlReleaseInfoDto { ...@@ -106,6 +111,22 @@ public class OrderCargoControlReleaseInfoDto {
@ApiModelProperty(value = "收货人邮箱") @ApiModelProperty(value = "收货人邮箱")
private String consigneeEmail; private String consigneeEmail;
@ApiModelProperty(value = "卸柜/到仓时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date unloadTime;
@ApiModelProperty(value = "是否限制修改收货人")
private Boolean isLimitUpdateConsignee;
@ApiModelProperty(value = "放货锁定收货人到期时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date lockConsigneeTime;
@ApiModelProperty(value = "放货锁定收货人天数")
private Integer lockConsigneeDay;
@ApiModelProperty(value = "放货详情记录列表") @ApiModelProperty(value = "放货详情记录列表")
private List<OrderCargoControlPickBackVO> cargoControlPickBackVOList; private List<OrderCargoControlPickBackVO> cargoControlPickBackVOList;
......
...@@ -400,4 +400,6 @@ public interface ErrorCodeConstants { ...@@ -400,4 +400,6 @@ public interface ErrorCodeConstants {
ErrorCode FREIGHT_UNIT_NOT_NULL = new ErrorCode(1004001158, "order.item.freight.unit.not.null"); ErrorCode FREIGHT_UNIT_NOT_NULL = new ErrorCode(1004001158, "order.item.freight.unit.not.null");
ErrorCode CLEARANCE_CURRENCY_NOT_NULL = new ErrorCode(1004001159, "order.item.clearance.currency.not.null"); ErrorCode CLEARANCE_CURRENCY_NOT_NULL = new ErrorCode(1004001159, "order.item.clearance.currency.not.null");
ErrorCode CLEARANCE_UNIT_NOT_NULL = new ErrorCode(1004001160, "order.item.clearance.unit.not.null"); ErrorCode CLEARANCE_UNIT_NOT_NULL = new ErrorCode(1004001160, "order.item.clearance.unit.not.null");
ErrorCode ORDER_CARGO_CONTROL_LIMIT_UPDATE_CONSIGNEE_ERROR = new ErrorCode(1004001155, "order.cargo.control.limit.update.consignee.error");
ErrorCode ORDER_CARGO_CONTROL_LIMIT_UPDATE_CONSIGNEE_INFO = new ErrorCode(1004001156, "order.cargo.control.limit.update.consignee.info");
} }
...@@ -588,7 +588,13 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl ...@@ -588,7 +588,13 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
} }
OrderConsigneeDO orderConsigneeDO = null; OrderConsigneeDO orderConsigneeDO = null;
// 当订单为控货订单,且发货人客户档案未设置控货无收货人,则需要校验收货人信息 // 当订单为控货订单,且发货人客户档案未设置控货无收货人,则需要校验收货人信息
if (order.getIsCargoControl() && !noConsignee) { if (!order.getIsCargoControl() || !noConsignee) {
// 控货订单有收货人则限制修改收货人
if (order.getIsCargoControl()) {
order.setIsLimitUpdateConsignee(Boolean.TRUE);
}else {
order.setIsLimitUpdateConsignee(Boolean.FALSE);
}
orderConsigneeDO = new OrderConsigneeDO(); orderConsigneeDO = new OrderConsigneeDO();
orderConsigneeDO.setOrderId(order.getOrderId()); orderConsigneeDO.setOrderId(order.getOrderId());
orderConsigneeDO.setCreator(creator); orderConsigneeDO.setCreator(creator);
...@@ -668,6 +674,9 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl ...@@ -668,6 +674,9 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
} }
} }
orderConsigneeService.save(orderConsigneeDO); orderConsigneeService.save(orderConsigneeDO);
}else {
// 控货订单没有收货人则不限制修改收货人
order.setIsLimitUpdateConsignee(Boolean.FALSE);
} }
if (!Objects.equals(createReqVO.getStatus(), OrderStatusEnum.DRAFT.getValue())) { if (!Objects.equals(createReqVO.getStatus(), OrderStatusEnum.DRAFT.getValue())) {
//customerType 发货人-1 收货人 2 //customerType 发货人-1 收货人 2
...@@ -795,7 +804,13 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl ...@@ -795,7 +804,13 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
orderBusinessService.createOrderControlLog(orderCargoControlDO.getOrderId(), 1, "创建控货信息", msg, 0L); orderBusinessService.createOrderControlLog(orderCargoControlDO.getOrderId(), 1, "创建控货信息", msg, 0L);
} }
OrderConsigneeDO orderConsigneeDO = null; OrderConsigneeDO orderConsigneeDO = null;
if (order.getIsCargoControl() && !noConsignee) { if (!order.getIsCargoControl() || !noConsignee) {
// 控货订单有收货人则限制修改收货人
if (order.getIsCargoControl()) {
order.setIsLimitUpdateConsignee(Boolean.TRUE);
}else {
order.setIsLimitUpdateConsignee(Boolean.FALSE);
}
orderConsigneeDO = new OrderConsigneeDO(); orderConsigneeDO = new OrderConsigneeDO();
orderConsigneeDO.setOrderId(order.getOrderId()); orderConsigneeDO.setOrderId(order.getOrderId());
orderConsigneeDO.setCreator(creator); orderConsigneeDO.setCreator(creator);
...@@ -905,6 +920,9 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl ...@@ -905,6 +920,9 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
if (StringUtils.isNotBlank(orderConsigneeDO.getPhone())) { if (StringUtils.isNotBlank(orderConsigneeDO.getPhone())) {
orderConsigneeService.save(orderConsigneeDO); orderConsigneeService.save(orderConsigneeDO);
} }
}else {
// 控货订单没有收货人则不限制修改收货人
order.setIsLimitUpdateConsignee(Boolean.FALSE);
} }
if (!Objects.equals(createReqVO.getStatus(), if (!Objects.equals(createReqVO.getStatus(),
OrderStatusEnum.DRAFT.getValue())) { OrderStatusEnum.DRAFT.getValue())) {
...@@ -934,7 +952,7 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl ...@@ -934,7 +952,7 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
if (Objects.isNull(consignorDO)) {//发货人客户 if (Objects.isNull(consignorDO)) {//发货人客户
consignorDO = customerService.getCustomer(orderConsignorDO.getCustomerId()); consignorDO = customerService.getCustomer(orderConsignorDO.getCustomerId());
} }
if (Objects.isNull(consigneeDO)) { if (Objects.isNull(consigneeDO) && Objects.nonNull(orderConsigneeDO)) {
consigneeDO = customerService.getCustomer(orderConsigneeDO.getCustomerId());//收货人客户 consigneeDO = customerService.getCustomer(orderConsigneeDO.getCustomerId());//收货人客户
} }
// 原客户经理 // 原客户经理
...@@ -3000,7 +3018,13 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl ...@@ -3000,7 +3018,13 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
} }
OrderConsigneeDO orderConsigneeDO = orderConsigneeService.getOne(new LambdaQueryWrapper<OrderConsigneeDO>().eq(OrderConsigneeDO::getOrderId, updateObj.getOrderId()).orderByDesc(OrderConsigneeDO::getId).last("limit 1")); OrderConsigneeDO orderConsigneeDO = orderConsigneeService.getOne(new LambdaQueryWrapper<OrderConsigneeDO>().eq(OrderConsigneeDO::getOrderId, updateObj.getOrderId()).orderByDesc(OrderConsigneeDO::getId).last("limit 1"));
if (updateObj.getIsCargoControl() && !noConsignee) { if (!updateObj.getIsCargoControl() || !noConsignee) {
// 控货订单有收货人则限制修改收货人
if (updateObj.getIsCargoControl()) {
updateObj.setIsLimitUpdateConsignee(Boolean.TRUE);
}else {
updateObj.setIsLimitUpdateConsignee(Boolean.FALSE);
}
if (Objects.isNull(orderConsigneeDO)) { if (Objects.isNull(orderConsigneeDO)) {
orderConsigneeDO = new OrderConsigneeDO(); orderConsigneeDO = new OrderConsigneeDO();
} }
...@@ -3072,6 +3096,8 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl ...@@ -3072,6 +3096,8 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
orderConsigneeService.removeById(orderConsigneeDO.getId()); orderConsigneeService.removeById(orderConsigneeDO.getId());
orderConsigneeDO = null; orderConsigneeDO = null;
} }
// 控货订单没有收货人则不限制修改收货人
updateObj.setIsLimitUpdateConsignee(Boolean.FALSE);
} }
if (!Objects.equals(updateReqVO.getStatus(), if (!Objects.equals(updateReqVO.getStatus(),
OrderStatusEnum.DRAFT.getValue())) { OrderStatusEnum.DRAFT.getValue())) {
...@@ -3218,8 +3244,13 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl ...@@ -3218,8 +3244,13 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
OrderConsigneeDO orderConsigneeDO = orderConsigneeService.getOne(new LambdaQueryWrapper<OrderConsigneeDO>().eq(OrderConsigneeDO::getOrderId, updateObj.getOrderId()).orderByDesc(OrderConsigneeDO::getId).last("limit 1")); OrderConsigneeDO orderConsigneeDO = orderConsigneeService.getOne(new LambdaQueryWrapper<OrderConsigneeDO>().eq(OrderConsigneeDO::getOrderId, updateObj.getOrderId()).orderByDesc(OrderConsigneeDO::getId).last("limit 1"));
if (updateObj.getIsCargoControl() && !noConsignee) { if (!updateObj.getIsCargoControl() || !noConsignee) {
orderConsigneeDO = new OrderConsigneeDO(); // 控货订单有收货人则限制修改收货人
if (updateObj.getIsCargoControl()) {
updateObj.setIsLimitUpdateConsignee(Boolean.TRUE);
}else {
updateObj.setIsLimitUpdateConsignee(Boolean.FALSE);
}
if (Objects.isNull(orderConsigneeDO)) { if (Objects.isNull(orderConsigneeDO)) {
orderConsigneeDO = new OrderConsigneeDO(); orderConsigneeDO = new OrderConsigneeDO();
} }
...@@ -3324,6 +3355,8 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl ...@@ -3324,6 +3355,8 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
orderConsigneeDO = null; orderConsigneeDO = null;
} }
consigneeDO = null; consigneeDO = null;
// 控货订单没有收货人则不限制修改收货人
updateObj.setIsLimitUpdateConsignee(Boolean.FALSE);
} }
if (!Objects.equals(updateReqVO.getStatus(), if (!Objects.equals(updateReqVO.getStatus(),
OrderStatusEnum.DRAFT.getValue())) { OrderStatusEnum.DRAFT.getValue())) {
...@@ -5425,10 +5458,15 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl ...@@ -5425,10 +5458,15 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
orderConsignorService.updateById(consignorDO); orderConsignorService.updateById(consignorDO);
OrderConsigneeDO consigneeDO = OrderConsigneeConvert.INSTANCE.convert(consigneeVO); OrderConsigneeDO consigneeDO = OrderConsigneeConvert.INSTANCE.convert(consigneeVO);
// 控货订单发货人无收货人属性变动,需要清空订单收货人信息 // 控货订单发货人无收货人属性变动,需要清空订单收货人信息
Boolean isLimitUpdateConsignee = Boolean.FALSE;
if (orderBackVO.getIsChargeNoConsignee()){ if (orderBackVO.getIsChargeNoConsignee()){
orderConsigneeService.removeById(consigneeDO.getId()); orderConsigneeService.removeById(consigneeDO.getId());
}else { }else {
orderConsigneeService.updateById(consigneeDO); orderConsigneeService.updateById(consigneeDO);
if (orderBackVO.getIsCargoControl()){
// 控货订单有收货人则限制修改收货人
isLimitUpdateConsignee = Boolean.TRUE;
}
} }
// 始发地目的地更新 // 始发地目的地更新
OrderDepartureDO departureDO = OrderDepartureConvert.INSTANCE.convert(orderBackVO.getOrderDepartureVO()); OrderDepartureDO departureDO = OrderDepartureConvert.INSTANCE.convert(orderBackVO.getOrderDepartureVO());
...@@ -5440,6 +5478,7 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl ...@@ -5440,6 +5478,7 @@ public class OrderServiceImpl extends AbstractService<OrderMapper, OrderDO> impl
if (orderBackVO.getIsException()) { if (orderBackVO.getIsException()) {
orderDO.setHandlerChannelAttrException(false); orderDO.setHandlerChannelAttrException(false);
} }
orderDO.setIsLimitUpdateConsignee(isLimitUpdateConsignee);
orderDO.setOrderNo(oldOrder.getOrderNo()); orderDO.setOrderNo(oldOrder.getOrderNo());
String oldOrderNo = oldOrder.getOrderNo(); // 临时保存旧的订单编号 String oldOrderNo = oldOrder.getOrderNo(); // 临时保存旧的订单编号
boolean isDisassociation = false; boolean isDisassociation = false;
......
...@@ -86,7 +86,22 @@ public interface OrderCargoControlService extends IService<OrderCargoControlDO> ...@@ -86,7 +86,22 @@ public interface OrderCargoControlService extends IService<OrderCargoControlDO>
*/ */
List<OrderCargoControlDO> getOrderCargoControlList(OrderCargoControlQueryVO query); List<OrderCargoControlDO> getOrderCargoControlList(OrderCargoControlQueryVO query);
PageResult<OrderBackPageVO> orderPage(OrderQueryVO query, PageVO page); PageResult<OrderBackPageVO> cargoControlOrderPage(OrderQueryVO query, PageVO page);
/**
* 预警控货订单信息
* 满足条件:1、控货订单
* 2、非海外仓订单
* 3、控货订单放货三次未提货完
* 4、控货订单已过免仓时效,未完成放货
* 以上为查询出的预警控货订单,以便于将订单转海外仓货、收取仓储费用、提醒客户放货等业务操作
*
* @param query
* @param page
* @return
*/
PageResult<OrderBackPageVO> warningCargoControlOrderPage(OrderQueryVO query, PageVO page);
OrderCargoControlBackVO getOrderCargoControlInfo(Long orderId); OrderCargoControlBackVO getOrderCargoControlInfo(Long orderId);
...@@ -108,9 +123,10 @@ public interface OrderCargoControlService extends IService<OrderCargoControlDO> ...@@ -108,9 +123,10 @@ public interface OrderCargoControlService extends IService<OrderCargoControlDO>
void exportCargoControlOrderExcel(HttpServletResponse response, OrderQueryVO query) throws IOException; void exportCargoControlOrderExcel(HttpServletResponse response, OrderQueryVO query) throws IOException;
// FileDO makeCargoControlOrderExcelFile(Long userId, Integer userType, OrderQueryVO query) throws Exception; // FileDO makeCargoControlOrderExcelFile(Long userId, Integer userType, OrderQueryVO query) throws Exception;
FileDO makeCargoControlOrderExcelFile(Long userId, Integer userType, OrderQueryDTO query) throws Exception; FileDO makeCargoControlOrderExcelFile(Long userId, Integer userType, OrderQueryDTO query) throws Exception;
/** /**
* 判断是否控货人是否设置了控货密码 * 判断是否控货人是否设置了控货密码
* *
......
...@@ -152,7 +152,7 @@ public class OrderCargoControlServiceImpl extends AbstractService<OrderCargoCont ...@@ -152,7 +152,7 @@ public class OrderCargoControlServiceImpl extends AbstractService<OrderCargoCont
// 当控货人手机号没有注册web用户,或者用户没有设置控货密码时不能进行控货密码放货 // 当控货人手机号没有注册web用户,或者用户没有设置控货密码时不能进行控货密码放货
if (isPasswordNull) { if (isPasswordNull) {
throw exception(CONTROLLER_USER_NOT_SET_CONTROL_PASSWORD); throw exception(CONTROLLER_USER_NOT_SET_CONTROL_PASSWORD);
}else { } else {
// 参数:未加密密码,编码后的密码 // 参数:未加密密码,编码后的密码
throw exception(USER_PASSWORD_FAILED); throw exception(USER_PASSWORD_FAILED);
} }
...@@ -175,7 +175,7 @@ public class OrderCargoControlServiceImpl extends AbstractService<OrderCargoCont ...@@ -175,7 +175,7 @@ public class OrderCargoControlServiceImpl extends AbstractService<OrderCargoCont
String msg = String.format("订单控货人信息由姓名%s,电话+%s,转移为姓名%s,电话+%s,校验方式:%s", String msg = String.format("订单控货人信息由姓名%s,电话+%s,转移为姓名%s,电话+%s,校验方式:%s",
orgOrderCargoControlDO.getName() + "/" + orgOrderCargoControlDO.getNameEn(), orgOrderCargoControlDO.getDialCode() + orgOrderCargoControlDO.getPhone(), orgOrderCargoControlDO.getName() + "/" + orgOrderCargoControlDO.getNameEn(), orgOrderCargoControlDO.getDialCode() + orgOrderCargoControlDO.getPhone(),
orderCargoControl.getName() + "/" + (StringUtils.isNotBlank(orderCargoControl.getNameEn()) ? orderCargoControl.getNameEn() : "空"), orderCargoControl.getDialCode() + orderCargoControl.getPhone(), orderCargoControl.getName() + "/" + (StringUtils.isNotBlank(orderCargoControl.getNameEn()) ? orderCargoControl.getNameEn() : "空"), orderCargoControl.getDialCode() + orderCargoControl.getPhone(),
isPasswordPick ? "密码校验": "验证码校验"); isPasswordPick ? "密码校验" : "验证码校验");
orderBusinessService.createOrderControlLog(orderCargoControl.getOrderId(), 3, "控货人信息转移", msg, 0L); orderBusinessService.createOrderControlLog(orderCargoControl.getOrderId(), 3, "控货人信息转移", msg, 0L);
// 返回 // 返回
return orderCargoControl.getId(); return orderCargoControl.getId();
...@@ -225,7 +225,18 @@ public class OrderCargoControlServiceImpl extends AbstractService<OrderCargoCont ...@@ -225,7 +225,18 @@ public class OrderCargoControlServiceImpl extends AbstractService<OrderCargoCont
} }
@Override @Override
public PageResult<OrderBackPageVO> orderPage(OrderQueryVO query, PageVO page) { public PageResult<OrderBackPageVO> cargoControlOrderPage(OrderQueryVO query, PageVO page) {
return orderQueryService.adminCargoControlOrderPage(query, page);
}
@Override
public PageResult<OrderBackPageVO> warningCargoControlOrderPage(OrderQueryVO query, PageVO page) {
/* 满足条件:1、控货订单
* 2、非海外仓订单
* 3、控货订单放货三次未提货完
* 4、控货订单已过免仓时效,未完成放货
*/
query.setWarningOrder(1);
return orderQueryService.adminCargoControlOrderPage(query, page); return orderQueryService.adminCargoControlOrderPage(query, page);
} }
......
...@@ -131,15 +131,10 @@ public class OrderCargoControlPickServiceImpl extends AbstractService<OrderCargo ...@@ -131,15 +131,10 @@ public class OrderCargoControlPickServiceImpl extends AbstractService<OrderCargo
if (StringUtils.equals(createReqVO.getConsigneeCountryCode(), "86")) { if (StringUtils.equals(createReqVO.getConsigneeCountryCode(), "86")) {
throw exception(CONSIGNEE_PHONE_IS_NOT_CHINA); throw exception(CONSIGNEE_PHONE_IS_NOT_CHINA);
} }
// if (StringUtils.isNotBlank(createReqVO.getConsigneeCountryCode()) && StringUtils.isNotBlank(createReqVO.getConsigneePhone())) {
String mobileCode = createReqVO.getConsigneeCountryCode() + String mobileCode = createReqVO.getConsigneeCountryCode() +
StrUtil.COLON + createReqVO.getConsigneePhone(); StrUtil.COLON + createReqVO.getConsigneePhone();
paramValidatorApi.validatorMobile(mobileCode); paramValidatorApi.validatorMobile(mobileCode);
// String phone = PhoneUtil.formatPhone(mobileCode);
// if (StringUtils.isNotBlank(phone)) {
// createReqVO.setConsigneePhone(phone);
// }
// }
OrderDO orderDO = orderService.getById(createReqVO.getOrderId()); OrderDO orderDO = orderService.getById(createReqVO.getOrderId());
if (Objects.isNull(orderDO)) { if (Objects.isNull(orderDO)) {
throw exception(ORDER_NOT_EXISTS); throw exception(ORDER_NOT_EXISTS);
...@@ -151,7 +146,21 @@ public class OrderCargoControlPickServiceImpl extends AbstractService<OrderCargo ...@@ -151,7 +146,21 @@ public class OrderCargoControlPickServiceImpl extends AbstractService<OrderCargo
if (createReqVO.getPickNum() > orderDO.getSumNum()) { if (createReqVO.getPickNum() > orderDO.getSumNum()) {
throw exception(ORDER_CARGO_CONTROL_NUM_GO_BEYOND); throw exception(ORDER_CARGO_CONTROL_NUM_GO_BEYOND);
} }
// 如果控货订单限制修改收货人,则需要判断控货收货人限制修改时间是否到期,且当前放货操作的收货人电话是否有变动
if (orderDO.getIsLimitUpdateConsignee() && Objects.isNull(orderDO.getLockConsigneeTime())){
// 当前控货订单限制修改收货人,但是未到仓/卸柜,未查询到限制时间
throw exception(ORDER_CARGO_CONTROL_LIMIT_UPDATE_CONSIGNEE_ERROR);
}
if (orderDO.getIsLimitUpdateConsignee() && Objects.nonNull(orderDO.getLockConsigneeTime()) && orderDO.getLockConsigneeTime().compareTo(new Date()) >= 0){
// 控货收货人限制修改时间未到期,需要判断当前放货操作的收货人电话是否有变动
OrderCargoControlReleaseInfoDto releaseInfoDto = orderCargoControlMapper.getOrderCargoControlReleaseInfo(orderDO.getOrderId());
if (StringUtils.isBlank(releaseInfoDto.getConsigneeCountryCode()) || StringUtils.isBlank(releaseInfoDto.getConsigneePhone())){
throw exception(ORDER_CONSIGNEE_PHONE_INFO_NOT_COMPLETE);
}
if (!StringUtils.equals(releaseInfoDto.getConsigneeCountryCode()+releaseInfoDto.getConsigneePhone(), createReqVO.getConsigneeCountryCode() + createReqVO.getConsigneePhone())){
throw exception(ORDER_CARGO_CONTROL_LIMIT_UPDATE_CONSIGNEE_INFO);
}
}
int pickNum = 0; int pickNum = 0;
int pickQuantity = 0; int pickQuantity = 0;
BigDecimal pickVolume = BigDecimal.ZERO; BigDecimal pickVolume = BigDecimal.ZERO;
......
...@@ -15,6 +15,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -15,6 +15,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Comparator; import java.util.Comparator;
...@@ -326,9 +327,21 @@ public class OrderBackPageVO { ...@@ -326,9 +327,21 @@ public class OrderBackPageVO {
@ApiModelProperty(value = "已装柜时间/到仓时间") @ApiModelProperty(value = "已装柜时间/到仓时间")
private Date loadTime; private Date loadTime;
@ApiModelProperty(value = "已卸柜时间/出仓时间") @ApiModelProperty(value = "已卸柜/已到仓时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date unloadTime; private Date unloadTime;
@ApiModelProperty(value = "是否限制修改收货人")
private Boolean isLimitUpdateConsignee;
@ApiModelProperty(value = "放货锁定收货人到期时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date lockConsigneeTime;
@ApiModelProperty(value = "放货锁定收货人天数")
private Integer lockConsigneeDay;
/** /**
* 渠道名称 * 渠道名称
......
...@@ -88,7 +88,7 @@ public class OrderBaseVO { ...@@ -88,7 +88,7 @@ public class OrderBaseVO {
@ApiModelProperty(value = "唛头") @ApiModelProperty(value = "唛头")
@NotBlank(message = "marks.not.null") @NotBlank(message = "marks.not.null")
@Length(max = 20, message = "marks.length.max") @Length(max = 20, message = "marks.length.max")
@Marks(message = "marks.format.incorrect") // @Marks(message = "marks.format.incorrect")
private String marks; private String marks;
@ApiModelProperty(value = "产品备案属性:1有牌,2无牌,3中性,4混牌") @ApiModelProperty(value = "产品备案属性:1有牌,2无牌,3中性,4混牌")
......
...@@ -525,6 +525,9 @@ public class OrderQueryVO { ...@@ -525,6 +525,9 @@ public class OrderQueryVO {
private Boolean isInOpenSea; private Boolean isInOpenSea;
@ApiModelProperty(value = "是否预警控货订单: 1 是")
private Integer warningOrder;
public void setStatus(Integer status) { public void setStatus(Integer status) {
this.status = status; this.status = status;
this.asStatus = status; this.asStatus = status;
......
...@@ -1863,6 +1863,21 @@ ...@@ -1863,6 +1863,21 @@
<if test="query.status != null"> <if test="query.status != null">
AND o.`status` = #{query.status} AND o.`status` = #{query.status}
</if> </if>
<if test="query.warningOrder != null and query.warningOrder == 1 ">
AND (o.type is null or o.type = '' or NOT FIND_IN_SET(2, o.type))
AND o.`is_cargo_control` = 1
AND o.unload_time is not null
AND ((select IFNULL(sum(p.pick_num), 0) from `ecw_order_cargo_control_pick` p where p.order_id = o.order_id and p.status = 3) &lt; o.`sum_num`
or
DATE_ADD(o.unload_time, INTERVAL (
SELECT
IFNULL(ew_dest.rent_free_days, 0)
FROM
ecw_warehouse_line ewl
JOIN ecw_warehouse ew_dest ON ewl.dest_warehouse_id = ew_dest.id
WHERE ewl.id = o.line_id
) DAY) &lt; now())
</if>
<if test="query.abnormalState != null"> <if test="query.abnormalState != null">
<choose> <choose>
<when test="query.abnormalState != 0"> <when test="query.abnormalState != 0">
...@@ -3029,6 +3044,9 @@ ...@@ -3029,6 +3044,9 @@
o.is_exception, o.is_exception,
o.create_time, o.create_time,
o.load_time, o.load_time,
o.unload_time,
o.is_limit_update_consignee,
o.lock_consignee_time,
(select su.nickname from system_user su where su.deleted = 0 and su.id = o.salesman_id) as salesman_name, (select su.nickname from system_user su where su.deleted = 0 and su.id = o.salesman_id) as salesman_name,
(select min(wi.`in_time`) from ecw_order_warehouse_in wi where wi.deleted = 0 and wi.order_id = o.order_id ) as (select min(wi.`in_time`) from ecw_order_warehouse_in wi where wi.deleted = 0 and wi.order_id = o.order_id ) as
in_time, in_time,
...@@ -3118,6 +3136,9 @@ ...@@ -3118,6 +3136,9 @@
o.is_exception, o.is_exception,
o.create_time, o.create_time,
o.load_time, o.load_time,
o.unload_time,
o.is_limit_update_consignee,
o.lock_consignee_time,
(select su.nickname from system_user su where su.deleted = 0 and su.id = o.salesman_id) as salesman_name, (select su.nickname from system_user su where su.deleted = 0 and su.id = o.salesman_id) as salesman_name,
(select min(wi.`in_time`) from ecw_order_warehouse_in wi where wi.deleted = 0 and wi.order_id = o.order_id ) as (select min(wi.`in_time`) from ecw_order_warehouse_in wi where wi.deleted = 0 and wi.order_id = o.order_id ) as
in_time, in_time,
......
...@@ -94,7 +94,15 @@ public class OrderCargoControlController { ...@@ -94,7 +94,15 @@ public class OrderCargoControlController {
public CommonResult<PageResult<OrderBackPageVO>> cargoControlOrderPage(OrderQueryVO query, PageVO page) { public CommonResult<PageResult<OrderBackPageVO>> cargoControlOrderPage(OrderQueryVO query, PageVO page) {
query.setUserType(UserTypeEnum.ADMIN.getValue()); query.setUserType(UserTypeEnum.ADMIN.getValue());
PageResult<OrderBackPageVO> pageResult = PageResult<OrderBackPageVO> pageResult =
orderCargoControlService.orderPage(query, page); orderCargoControlService.cargoControlOrderPage(query, page);
return success(pageResult);
}
@GetMapping("/warning/cargo/control/order")
@ApiOperation("获得预警控货订单列表查询订单分页")
public CommonResult<PageResult<OrderBackPageVO>> warningCargoControlOrderPage(OrderQueryVO query, PageVO page) {
query.setUserType(UserTypeEnum.ADMIN.getValue());
PageResult<OrderBackPageVO> pageResult =
orderCargoControlService.warningCargoControlOrderPage(query, page);
return success(pageResult); return success(pageResult);
} }
......
...@@ -3371,7 +3371,7 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper, ...@@ -3371,7 +3371,7 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper,
.collect(toList()); .collect(toList());
if (CollectionUtil.isNotEmpty(stepSpecialList)) { if (CollectionUtil.isNotEmpty(stepSpecialList)) {
Map<String, ProductPriceStepSpecialDO> stepSpecialMap = stepSpecialList.stream() Map<String, ProductPriceStepSpecialDO> stepSpecialMap = stepSpecialList.stream()
.collect(Collectors.toMap(ProductPriceStepSpecialDO::getSpecialDictType, v -> v)); .collect(Collectors.toMap(ProductPriceStepSpecialDO::getSpecialDictType, v -> v, (v1, v2) -> v2));
List<ProductPriceStepSpecialDO> dbStepSpecialList = stepSpecialGroupMap.get(dbStep.getId()); List<ProductPriceStepSpecialDO> dbStepSpecialList = stepSpecialGroupMap.get(dbStep.getId());
if (CollectionUtil.isEmpty(dbStepSpecialList)) continue; if (CollectionUtil.isEmpty(dbStepSpecialList)) continue;
for (ProductPriceStepSpecialDO dbStepSpecial : dbStepSpecialList) { for (ProductPriceStepSpecialDO dbStepSpecial : dbStepSpecialList) {
...@@ -3555,7 +3555,7 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper, ...@@ -3555,7 +3555,7 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper,
snapshotList.add(snapshot); snapshotList.add(snapshot);
dbItem.setUpdater(String.valueOf(loginUserId)); dbItem.setUpdater(String.valueOf(loginUserId));
updateColumn(dbItem, productPrice); updateColumn(dbItem, productPrice);
productPriceMapper.updateById(dbItem);
} else { } else {
dbItem = ObjectUtil.clone(productPrice); dbItem = ObjectUtil.clone(productPrice);
dbItem.setProductId(productDO.getId()); dbItem.setProductId(productDO.getId());
...@@ -3589,12 +3589,18 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper, ...@@ -3589,12 +3589,18 @@ public class ProductPriceServiceImpl extends AbstractService<ProductPriceMapper,
dbItem.setBlacklist(0); dbItem.setBlacklist(0);
dbItem.setStatus(0); dbItem.setStatus(0);
dbItem.setCreateTime(current); dbItem.setCreateTime(current);
productPriceMapper.insert(dbItem); dbItem.setId(null);
} }
dbItem.setUpdateTime(current); dbItem.setUpdateTime(current);
String transportType = lineTransportTypeMap.get(lineId); String transportType = lineTransportTypeMap.get(lineId);
initBasePrice(dbItem, transportType); initBasePrice(dbItem, transportType);
if (Objects.isNull(dbItem.getId())){
productPriceMapper.insert(dbItem);
}else {
productPriceMapper.updateById(dbItem);
}
//添加修改日志,需要查询特需和阶梯,所以需要在修改之前执行 //添加修改日志,需要查询特需和阶梯,所以需要在修改之前执行
batchAddSnapshot(snapshotList); batchAddSnapshot(snapshotList);
......
...@@ -8,6 +8,8 @@ import lombok.*; ...@@ -8,6 +8,8 @@ import lombok.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.*; import javax.validation.constraints.*;
...@@ -36,7 +38,9 @@ public class OfferBaseVO { ...@@ -36,7 +38,9 @@ public class OfferBaseVO {
private Long consigneeId; private Long consigneeId;
@ApiModelProperty(value = "唛头") @ApiModelProperty(value = "唛头")
@Marks(message = "marks.format.incorrect") @NotBlank(message = "marks.not.null")
@Length(max = 20, message = "marks.length.max")
// @Marks(message = "marks.format.incorrect")
private String marks; private String marks;
@ApiModelProperty(value = "订单类型(可多选):1 集运服务 2 海外仓") @ApiModelProperty(value = "订单类型(可多选):1 集运服务 2 海外仓")
......
...@@ -269,4 +269,6 @@ order.item.freight.unit.not.null= ...@@ -269,4 +269,6 @@ order.item.freight.unit.not.null=
order.item.clearance.currency.not.null= order.item.clearance.currency.not.null=
order.item.clearance.unit.not.null= order.item.clearance.unit.not.null=
member.id.is.null= member.id.is.null=
score.count.error= score.count.error=
\ No newline at end of file order.cargo.control.limit.update.consignee.error=
order.cargo.control.limit.update.consignee.info=
...@@ -1006,6 +1006,8 @@ order.item.freight.currency.not.null=The currency unit for the shipping cost of ...@@ -1006,6 +1006,8 @@ order.item.freight.currency.not.null=The currency unit for the shipping cost of
order.item.freight.unit.not.null=The unit of measurement for shipping fees for order items cannot be empty order.item.freight.unit.not.null=The unit of measurement for shipping fees for order items cannot be empty
order.item.clearance.currency.not.null=Customs clearance fee for order goods, currency unit cannot be empty order.item.clearance.currency.not.null=Customs clearance fee for order goods, currency unit cannot be empty
order.item.clearance.unit.not.null=The unit of measurement for customs clearance fees for order goods cannot be empty order.item.clearance.unit.not.null=The unit of measurement for customs clearance fees for order goods cannot be empty
order.cargo.control.limit.update.consignee.error=The current control order restricts the modification of the consignee, and no restriction time was found
order.cargo.control.limit.update.consignee.info=The recipient restriction modification time for the controlled goods order has not expired, and the recipient information for the order cannot be modified
member.id.is.null=no member ids member.id.is.null=no member ids
score.count.error= score count must > 0 score.count.error= score count must > 0
......
...@@ -1031,6 +1031,9 @@ reward.redeem.allow.count.error = \u5DF2\u8D85\u51FA\u4E2A\u4EBA\u5141\u8BB8\u51 ...@@ -1031,6 +1031,9 @@ reward.redeem.allow.count.error = \u5DF2\u8D85\u51FA\u4E2A\u4EBA\u5141\u8BB8\u51
reward.node.and.points.list.error = \u521B\u5EFA\u793C\u54C1\u7F51\u70B9\u6216\u6240\u9700\u79EF\u5206\u9519\u8BEF reward.node.and.points.list.error = \u521B\u5EFA\u793C\u54C1\u7F51\u70B9\u6216\u6240\u9700\u79EF\u5206\u9519\u8BEF
reward.redeem.recipient.error = \u793C\u54C1\u6536\u8D27\u4EBA\u4FE1\u606F\u4E0D\u5168 reward.redeem.recipient.error = \u793C\u54C1\u6536\u8D27\u4EBA\u4FE1\u606F\u4E0D\u5168
redeem.import.no.record = \u8868\u683C\u4E2D\u65E0\u8BB0\u5F55 redeem.import.no.record = \u8868\u683C\u4E2D\u65E0\u8BB0\u5F55
order.cargo.control.limit.update.consignee.error=\u5f53\u524d\u63a7\u8d27\u8ba2\u5355\u9650\u5236\u4fee\u6539\u6536\u8d27\u4eba\uff0c\u672a\u67e5\u8be2\u5230\u9650\u5236\u65f6\u95f4
order.cargo.control.limit.update.consignee.info=\u63a7\u8d27\u8ba2\u5355\u6536\u8d27\u4eba\u9650\u5236\u4fee\u6539\u65f6\u95f4\u672a\u5230\u671f\uff0c\u4e0d\u80fd\u4fee\u6539\u8ba2\u5355\u6536\u8d27\u4eba\u4fe1\u606f
get.lock.failed = \u670D\u52A1\u7E41\u5FD9\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5 get.lock.failed = \u670D\u52A1\u7E41\u5FD9\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5
reward.redeem.not.exist = \u793C\u54C1\u5151\u6362\u8BB0\u5F55\u4E0D\u5B58\u5728 reward.redeem.not.exist = \u793C\u54C1\u5151\u6362\u8BB0\u5F55\u4E0D\u5B58\u5728
......
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