预约单列表与确认

This commit is contained in:
赵辉
2026-02-12 08:35:41 +08:00
parent 144a5f625a
commit d970a01169
13 changed files with 2063 additions and 60 deletions
@@ -2,10 +2,13 @@ package com.mhd.common.core.domain.po;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel; import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.annotation.fieldsetvalue.NeedSetValue;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@Data @Data
@@ -209,4 +212,60 @@ public class UserShipperPo {
@ApiModelProperty(name = "客户nc编码") @ApiModelProperty(name = "客户nc编码")
private String customerNcCode; private String customerNcCode;
}
@ApiModelProperty(name = "组织id")
private Long organizationId;
// @ApiModelProperty(name = '一级组织表ID')
private Long topOrganizationId;
@ApiModelProperty(name = "托运人个体货主审核人员id")
private Long shipperFillAuthId;
@ApiModelProperty(name = "托运人个体货主审核人员")
private String shipperFillAuthName;
@ApiModelProperty(name = "托运人发货企业审核人员id")
private Long shipperEnterpriselAuthId;
@ApiModelProperty(name = "托运人发货企业审核人员")
private String shipperEnterpriselAuthName;
@ApiModelProperty(name = "用户实名认证状态:0-无状态,1-未认证,2-正在审核,3-认证通过,4-认证失败,5-认证失效")
private Integer userAuthStatus;
@ApiModelProperty(name = "回单原件标记(1-需要,2-不需要)")
private Integer originalReceiptFlag;
@ApiModelProperty(name = "运费节点(0-无要求,1-确认回单,2-纸质回单)")
private Integer freightNode;
@ApiModelProperty(name = "e签宝授权认证状态(0-未授权,1-授权中,2-授权完成,3-授权失败)")
private Integer esignAuthStatus;
@ApiModelProperty(name = "e签宝跨企业授权状态(0-未授权,1-授权中,2-授权完成,3-授权失败)")
private Integer esignEnterpriseStatus;
@ApiModelProperty(name = "e签宝跨企业授权业务流程编号")
private String esignSealAuthId;
@ApiModelProperty(value = "授权额度")
private BigDecimal authorizedQuota;
@ApiModelProperty(value = "结算天数")
private Integer settlementDay;
@ApiModelProperty("已使用的授权额度")
private BigDecimal authorizedUsedAmount;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty("结算币种")
private String settlementCurrency;
}
@@ -504,6 +504,9 @@ public class ReservationOrder {
@ApiModelProperty(value = "订单结算状态:1未出账、2已出账、3部分结算、4已结算") @ApiModelProperty(value = "订单结算状态:1未出账、2已出账、3部分结算、4已结算")
private Integer settlementStatus; private Integer settlementStatus;
@ApiModelProperty(value = "订单类型:0-预约单,1-业务单")
private Integer orderType;
@ApiModelProperty(value = "订单运费结算时间") @ApiModelProperty(value = "订单运费结算时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@@ -692,4 +695,10 @@ public class ReservationOrder {
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date documentDate; private java.util.Date documentDate;
@ApiModelProperty("业务单id")
private Long businessOrderId;
@ApiModelProperty("业务单号")
private String businessOrderNumber;
} }
@@ -1,15 +1,39 @@
package com.mhd.oms.domain.reservationOrder.repository.facade; package com.mhd.oms.domain.reservationOrder.repository.facade;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.mhd.oms.domain.businessDocumentOrder.repository.po.BusinessDocumentOrderPO;
import com.mhd.oms.domain.reservationOrder.entity.ReservationOrder; import com.mhd.oms.domain.reservationOrder.entity.ReservationOrder;
import com.mhd.oms.domain.reservationOrder.repository.po.ReservationOrderPO;
import com.mhd.oms.interfaces.dto.resevationOrder.OmsOrderAddDTO; import com.mhd.oms.interfaces.dto.resevationOrder.OmsOrderAddDTO;
import com.mhd.oms.interfaces.dto.resevationOrder.OmsOrderDTO;
import com.mhd.common.core.utils.sms.Result;
import com.mhd.common.core.web.domain.AjaxResult;
import java.security.InvalidKeyException; import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.security.SignatureException; import java.security.SignatureException;
import java.security.spec.InvalidKeySpecException; import java.security.spec.InvalidKeySpecException;
import com.mhd.oms.interfaces.facade.resevationOrder.BatchConfirmResult;
public interface IOmsAddressMultiService extends IService<ReservationOrder> { import java.util.List;
public interface IOmsAddressMultiService {
void save(OmsOrderAddDTO tmsOrderAddDTO) throws InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException; void save(OmsOrderAddDTO tmsOrderAddDTO) throws InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException;
List<ReservationOrderPO> queryList(OmsOrderDTO omsOrderDTO);
/**
* 确认预约单,生成业务单
* @param goodsNumber 预约单号
* @return 业务单信息
*/
BusinessDocumentOrderPO confirmReservationOrder(String goodsNumber);
/**
* 批量确认预约单,生成业务单
* @param goodsNumbers 预约单号列表
* @return 批量处理结果
*/
Result<?> batchConfirmReservationOrder(List<String> goodsNumbers);
} }
@@ -8,4 +8,6 @@ import java.util.List;
public interface ReservationAddressMultiMapper extends BaseMapper<ReservationAddressMulti> { public interface ReservationAddressMultiMapper extends BaseMapper<ReservationAddressMulti> {
void insertBatch(@Param("list") List<ReservationAddressMulti> addressMultiList); void insertBatch(@Param("list") List<ReservationAddressMulti> addressMultiList);
String selectRouteNameByRouteId(String route);
} }
@@ -0,0 +1,12 @@
package com.mhd.oms.domain.reservationOrder.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mhd.oms.domain.reservationOrder.repository.po.ReservationOrderPO;
import com.mhd.oms.interfaces.dto.resevationOrder.OmsOrderDTO;
import java.util.List;
public interface ReservationDocumentOrderMapper extends BaseMapper<ReservationOrderPO> {
List<ReservationOrderPO> queryList(OmsOrderDTO omsOrderDTO);
}
@@ -0,0 +1,711 @@
package com.mhd.oms.domain.reservationOrder.repository.po;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author: brb
* @description:
* @create: 2026-02-10 17:50
*/
@Data
public class ReservationOrderPO {
private static final long serialVersionUID = 1L;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long id;
@ApiModelProperty("创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ApiModelProperty("修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
@ApiModelProperty("修改人")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String updateBy;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String realCreateBy;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String realCreateName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String createCompanyId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsNumber;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String loadingAreaId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String loadingName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String loadingAddress;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String loadingLongitude;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String loadingLatitude;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String loadingUnit;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String freighterName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String loadingPhone;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date loadingDate;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String unloadAreaId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String unloadName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String unloadAddress;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String unloadLongitude;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String unloadLatitude;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String dischargerName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String unloadPhone;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date unloadingData;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsTypeId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsNameId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal weightMin;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal weightMax;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsUntisId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsUntis;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long transportationModeId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String transportationName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String carType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String carTypeName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String serviceRequireId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String serviceRequire;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String remarks;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long waybillFrom;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isSource;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date sourceCloseTime;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String executorId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isDelete;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String lineTitleLeft;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String lineTitleRight;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String sysOrgCode;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isCommon;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsTypeMajor;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long auditStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long waybillMode;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date latestBiddingTime;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal deliveryFreight;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal collectedFreight;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal uncollectedFreight;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal collectLessFreight;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String auditBy;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date auditTime;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String businessType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal transportationUnitPrice;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long radioValue;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String createrName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String createrPhone;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isElectricFence;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String wxaQrcode;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String appointShipperId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String createUserId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String appointShipper;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String signatureAddress;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String qrCodeImgUrl;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String shippingNote;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long receivableType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String thirdPartyOrderNumber;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String dispatchOrderNumber;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String appointDriverEnterpriseId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String appointDriverEnterprise;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String cancelOrderRemark;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String orderDriverId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal goodsQuantity;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsQuantityUnitId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsQuantityUnit;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String biddingUnit;
@ApiModelProperty("业务单状态 0-待审核 1-待执行 2-进行中 3-已完成 4-已取消 5-已拦截")
private Long orderStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long splicingOrderType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long splicingStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String mainOrderId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String mainOrderNum;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String mergeOrderId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String mergeOrderNum;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long payerType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String machineNumber;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long stockFlag;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal infoFee;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long infoFeePayeeType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String infoFeePayee;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long infoFeeStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String infoFeeDocumentNumber;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long orderShippingType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String recipientId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String recipientName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long settlementStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date settlementTime;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date paymentTime;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String reconciliationInnerNumber;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String receivePaymentNumber;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String invoiceId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isInvoice;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String vehicleTypeId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String vehicleTypeName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String carrier;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String carrierName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long szwlUserId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal freightUnitPrice;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long biddingStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String biddingRemarks;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal cargoInsuranceAmount;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String destination;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal freightCharges;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String payer;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String salesmanId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isDeclare;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String route;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String containerType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String containerTypeName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String cardType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String cardTypeName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String externalContainerNo;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String transitPlace;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String shipper;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String customsShipper;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String customsShipperTel;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String unloadingCompany;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String contractNo;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal freightFee;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal unloadingFee;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal customsFee;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal shortageFee;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal miscellaneousFee;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal otherFee;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal detentionFee;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal taxRate;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String settlementCurrency;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal volume;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String detailContent;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String customsRoute;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String customsPort;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String customsContact;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String customsContactPhone;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String customsRemark;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String orgId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsCategory;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String makerCodeNc;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String salesmanCodeNc;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String customerCodeNc;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String salesmanName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String orgName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long organizationId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String organizationName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long topOrganizationId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date documentDate;
@ApiModelProperty( "审核状态 0-未审核 1-审核通过 2-已驳回")
private Long reviewStatus;
@ApiModelProperty("审核时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date reviewTime;
@ApiModelProperty("审核人id")
private Long reviewId;
@ApiModelProperty("审核人")
private String review;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long EXECUTE_STATUS;
@ApiModelProperty( "执行状态 0-无状态 1-未执行 2-已执行 3-已下发")
private Long executeStatus;
@ApiModelProperty("执行时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date executeTime;
@ApiModelProperty("执行人id")
private Long executeId;
@ApiModelProperty("审核人")
private String executor;
@ApiModelProperty("业务单id")
private Long businesssOrderId ;
@ApiModelProperty("业务单号")
private String businessOrderNumber;
@ApiModelProperty("预约单类型")
private String orderType;
}
@@ -1,17 +1,23 @@
package com.mhd.oms.domain.reservationOrder.service; package com.mhd.oms.domain.reservationOrder.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake; import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.aliyun.oss.ServiceException; import com.aliyun.oss.ServiceException;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
//import com.linke.transport.interfaces.dto.warehouse.inBoundOrder.InboundOrderDTO; //import com.linke.transport.interfaces.dto.warehouse.inBoundOrder.InboundOrderDTO;
import com.mhd.common.core.domain.entity.R; import com.mhd.common.core.utils.sms.Result;
import com.mhd.oms.application.service.businessDocumentOrder.BusinessDocumentOrderApplicationService;
import com.mhd.oms.domain.businessDocumentOrder.repository.facade.IBusinessDocumentOrderService;
import com.mhd.oms.domain.businessDocumentOrder.entity.BusinessDocumentOrder;
import com.mhd.oms.domain.businessDocumentOrder.repository.po.BusinessDocumentOrderPO;
import com.mhd.oms.domain.businessDocumentCargoMulti.entity.BusinessDocumentCargoMulti;
import com.mhd.oms.domain.businessDocumentCargoMulti.repository.mapper.BusinessDocumentCargoMultiMapper;
import com.mhd.oms.domain.businessDocumentAddressMulti.entity.BusinessDocumentAddressMulti;
import com.mhd.oms.domain.businessDocumentAddressMulti.repository.mapper.BusinessDocumentAddressMultiMapper;
import com.mhd.oms.domain.businessDocumentOrder.repository.todo.BusinessDocumentOrderDO;
import com.mhd.oms.domain.reservationOrder.entity.ReservationAddressMulti; import com.mhd.oms.domain.reservationOrder.entity.ReservationAddressMulti;
import com.mhd.oms.domain.reservationOrder.entity.ReservationCargoInfo; import com.mhd.oms.domain.reservationOrder.entity.ReservationCargoInfo;
import com.mhd.oms.domain.reservationOrder.entity.ReservationOrder; import com.mhd.oms.domain.reservationOrder.entity.ReservationOrder;
@@ -20,10 +26,12 @@ import com.mhd.common.core.domain.thirdparty.SysDepartInterfaceInfoDTO;
import com.mhd.common.security.utils.SecurityUtils; import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.oms.domain.reservationOrder.repository.facade.IOmsAddressMultiService; import com.mhd.oms.domain.reservationOrder.repository.facade.IOmsAddressMultiService;
import com.mhd.oms.domain.reservationOrder.repository.mapper.*; import com.mhd.oms.domain.reservationOrder.repository.mapper.*;
import com.mhd.oms.domain.reservationOrder.repository.po.ReservationOrderPO;
import com.mhd.oms.enums.*; import com.mhd.oms.enums.*;
import com.mhd.oms.infrastructure.feign.ThirdPartyServiceFeign; import com.mhd.oms.infrastructure.feign.ThirdPartyServiceFeign;
//import com.mhd.oms.infrastructure.feign.TransportServiceFeign; //import com.mhd.oms.infrastructure.feign.TransportServiceFeign;
import com.mhd.oms.interfaces.dto.resevationOrder.*; import com.mhd.oms.interfaces.dto.resevationOrder.*;
import com.mhd.oms.interfaces.facade.resevationOrder.BatchConfirmResult;
import com.mhd.oms.util.DictDataUtils; import com.mhd.oms.util.DictDataUtils;
import com.mhd.oms.util.OrderSequence; import com.mhd.oms.util.OrderSequence;
import com.mhd.system.api.domain.*; import com.mhd.system.api.domain.*;
@@ -35,6 +43,7 @@ import com.mhd.common.core.domain.po.UserPo;
import com.mhd.common.core.domain.po.UserShipperPo; import com.mhd.common.core.domain.po.UserShipperPo;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@@ -46,8 +55,6 @@ import java.security.NoSuchAlgorithmException;
import java.security.SignatureException; import java.security.SignatureException;
import java.security.spec.InvalidKeySpecException; import java.security.spec.InvalidKeySpecException;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static org.reflections.Reflections.log; import static org.reflections.Reflections.log;
@@ -91,7 +98,21 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
@Resource @Resource
private ReservationAddressMultiMapper reservationAddressMultiMapper; private ReservationAddressMultiMapper reservationAddressMultiMapper;
@Resource
private BusinessDocumentCargoMultiMapper businessDocumentCargoMultiMapper;
@Resource
private BusinessDocumentAddressMultiMapper businessDocumentAddressMultiMapper;
@Resource
private ReservationOrderDomainService reservationOrderDomainService;
@Autowired
private BusinessDocumentOrderApplicationService businessDocumentOrderApplicationService;
@Autowired
private IBusinessDocumentOrderService businessDocumentOrderService;
@@ -118,7 +139,7 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
if (!shipperInfoResult.get("code").toString().equals("200")) { if (!shipperInfoResult.get("code").toString().equals("200")) {
throw new ServiceException("获取货主信息失败"); throw new ServiceException("获取货主信息失败");
} }
UserShipperPo userShipperPo = objectMapper.convertValue(shipperInfoResult.get("data"), UserShipperPo.class); // UserShipperPo userShipperPo = objectMapper.convertValue(shipperInfoResult.get("data"), UserShipperPo.class);
//2022-01-15增加代运营人根据货主id查询 //2022-01-15增加代运营人根据货主id查询
@@ -215,6 +236,7 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
resevationOrder.setSettlementStatus(1);//未出账 resevationOrder.setSettlementStatus(1);//未出账
resevationOrder.setAuditStatus(0);//未审核 resevationOrder.setAuditStatus(0);//未审核
resevationOrder.setSzwlUserId(Long.valueOf(swzlUserId)); resevationOrder.setSzwlUserId(Long.valueOf(swzlUserId));
resevationOrder.setTransitPlace(tmsOrderAddDTO.getTransitPlace());
if (resevationOrder.getLoadingDate() != null && resevationOrder.getUnloadingData() != null) { if (resevationOrder.getLoadingDate() != null && resevationOrder.getUnloadingData() != null) {
if (resevationOrder.getUnloadingData().before(resevationOrder.getLoadingDate())) { if (resevationOrder.getUnloadingData().before(resevationOrder.getLoadingDate())) {
throw new ServiceException("装货日期不能大于卸货日期!"); throw new ServiceException("装货日期不能大于卸货日期!");
@@ -259,6 +281,8 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
resevationOrder.setRealCreateBy(String.valueOf(userPo.getUserId())); resevationOrder.setRealCreateBy(String.valueOf(userPo.getUserId()));
resevationOrder.setRealCreateName(userPo.getUserName()); resevationOrder.setRealCreateName(userPo.getUserName());
resevationOrder.setAppointShipper(userShipperPoInfo.getShipperEnterpriseName());//20250-07-29修改:订单表委托方保存公司名字,而不是姓名 resevationOrder.setAppointShipper(userShipperPoInfo.getShipperEnterpriseName());//20250-07-29修改:订单表委托方保存公司名字,而不是姓名
resevationOrder.setUpdateTime(new Date());
resevationOrder.setUpdateBy(String.valueOf(userShipperPoInfo.getShipperId()));
String salesmanCodeNc = tmsOrderAddDTO.getSalesmanId(); String salesmanCodeNc = tmsOrderAddDTO.getSalesmanId();
if (salesmanCodeNc != null) { if (salesmanCodeNc != null) {
String makerCodeNc = tmsOrderServiceImpl.selectByMakerCodeNc(salesmanCodeNc); String makerCodeNc = tmsOrderServiceImpl.selectByMakerCodeNc(salesmanCodeNc);
@@ -846,6 +870,27 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
} }
@Override
public List<ReservationOrderPO> queryList(OmsOrderDTO omsOrderDTO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null){
Long topOrganizationId = loginUser.getUserPo().getTopOrganizationId();
if (topOrganizationId != null && topOrganizationId != 1){
omsOrderDTO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
}
List<ReservationOrderPO> reservationOrderPOS = reservationOrderDomainService.queryList(omsOrderDTO);
for (ReservationOrderPO reservationOrderPO : reservationOrderPOS){
String route = reservationOrderPO.getRoute();
if (route != null && !route.isEmpty()){
String routeName = reservationAddressMultiMapper.selectRouteNameByRouteId(route);
reservationOrderPO.setRoute(routeName);
}
}
return reservationOrderPOS;
}
/** /**
* 处理前端费用为null的情况 * 处理前端费用为null的情况
* @param tmsOrderAddDTO * @param tmsOrderAddDTO
@@ -1020,46 +1065,160 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
// } // }
@Override @Override
public boolean saveBatch(Collection<ReservationOrder> entityList, int batchSize) { public BusinessDocumentOrderPO confirmReservationOrder(String goodsNumber) {
return false; // 1. 根据预约单号查询预约单信息
LambdaQueryWrapper<ReservationOrder> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ReservationOrder::getGoodsNumber, goodsNumber);
ReservationOrder reservationOrder = resevationOrderMapper.selectOne(queryWrapper);
if (reservationOrder == null) {
throw new ServiceException("未找到对应的预约单信息");
}
// 2. 检查预约单状态,确保未被确认过
if (reservationOrder.getOrderType() != null && reservationOrder.getOrderType() == 1) {
throw new ServiceException("该预约单已被确认,不能重复确认");
}
// 3. 获取当前登录用户信息
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser == null) {
throw new ServiceException("用户未登录");
}
// 4. 构造业务单数据
BusinessDocumentOrderDO businessDocumentOrderDO = new BusinessDocumentOrderDO();
// 基本信息映射
businessDocumentOrderDO.setGoodsNumber(OrderSequence.getOrderCodeByDate(new Date())); // 生成业务单号
businessDocumentOrderDO.setOrderStatus(0L); // 业务单状态:0-待审核
businessDocumentOrderDO.setReviewStatus(0L); // 审核状态:0-未审核
businessDocumentOrderDO.setExecuteStatus(0L); // 执行状态:0-无状态
// 预约单信息映射
businessDocumentOrderDO.setReservationOrderId(reservationOrder.getId());
businessDocumentOrderDO.setReservationOrderNumber(reservationOrder.getGoodsNumber());
// 货物信息映射
businessDocumentOrderDO.setGoodsName(reservationOrder.getGoodsName());
businessDocumentOrderDO.setGoodsTypeId(reservationOrder.getGoodsTypeId());
businessDocumentOrderDO.setWeightMin(reservationOrder.getWeightMin());
businessDocumentOrderDO.setWeightMax(reservationOrder.getWeightMax());
businessDocumentOrderDO.setGoodsUntis(reservationOrder.getGoodsUntis());
businessDocumentOrderDO.setGoodsUntisId(reservationOrder.getGoodsUntisId());
// 地址信息映射
businessDocumentOrderDO.setLoadingName(reservationOrder.getLoadingName());
businessDocumentOrderDO.setLoadingAreaId(reservationOrder.getLoadingAreaId());
businessDocumentOrderDO.setLoadingAddress(reservationOrder.getLoadingAddress());
businessDocumentOrderDO.setLoadingLongitude(reservationOrder.getLoadingLongitude());
businessDocumentOrderDO.setLoadingLatitude(reservationOrder.getLoadingLatitude());
businessDocumentOrderDO.setLoadingPhone(reservationOrder.getLoadingPhone());
businessDocumentOrderDO.setLoadingDate(reservationOrder.getLoadingDate());
businessDocumentOrderDO.setUnloadName(reservationOrder.getUnloadName());
businessDocumentOrderDO.setUnloadAreaId(reservationOrder.getUnloadAreaId());
businessDocumentOrderDO.setUnloadAddress(reservationOrder.getUnloadAddress());
businessDocumentOrderDO.setUnloadLongitude(reservationOrder.getUnloadLongitude());
businessDocumentOrderDO.setUnloadLatitude(reservationOrder.getUnloadLatitude());
businessDocumentOrderDO.setUnloadPhone(reservationOrder.getUnloadPhone());
businessDocumentOrderDO.setUnloadingData(reservationOrder.getUnloadingData());
// 其他信息映射
businessDocumentOrderDO.setFreighterName(reservationOrder.getFreighterName());
businessDocumentOrderDO.setDischargerName(reservationOrder.getDischargerName());
businessDocumentOrderDO.setRemarks(reservationOrder.getRemarks());
businessDocumentOrderDO.setTransportationModeId(reservationOrder.getTransportationModeId() != null ?
reservationOrder.getTransportationModeId().longValue() : null);
businessDocumentOrderDO.setTransportationName(reservationOrder.getTransportationName());
businessDocumentOrderDO.setCarType(reservationOrder.getCarType());
businessDocumentOrderDO.setCarTypeName(reservationOrder.getCarTypeName());
businessDocumentOrderDO.setServiceRequireId(reservationOrder.getServiceRequireId());
businessDocumentOrderDO.setServiceRequire(reservationOrder.getServiceRequire());
businessDocumentOrderDO.setAppointShipperId(reservationOrder.getAppointShipperId());
businessDocumentOrderDO.setAppointShipper(reservationOrder.getAppointShipper());
businessDocumentOrderDO.setReceivableType(reservationOrder.getReceivableType() != null ?
reservationOrder.getReceivableType().longValue() : 2L);
// 添加订单类型映射
businessDocumentOrderDO.setOrderShippingType(reservationOrder.getOrderShippingType() != null ?
reservationOrder.getOrderShippingType().longValue() : 1L);
// 组织信息
businessDocumentOrderDO.setOrganizationId(reservationOrder.getOrganizationId());
businessDocumentOrderDO.setOrganizationName(reservationOrder.getOrganizationName());
businessDocumentOrderDO.setTopOrganizationId(reservationOrder.getTopOrganizationId());
businessDocumentOrderDO.setOrgId(reservationOrder.getOrgId());
businessDocumentOrderDO.setOrgName(reservationOrder.getOrgName());
// 创建人信息
businessDocumentOrderDO.setRealCreateBy(String.valueOf(loginUser.getUserid()));
businessDocumentOrderDO.setRealCreateName(loginUser.getUsername());
businessDocumentOrderDO.setCreateBy(loginUser.getUserid());
businessDocumentOrderDO.setCreateByName(loginUser.getUsername());
// 时间信息
businessDocumentOrderDO.setCreateTime(new Date());
businessDocumentOrderDO.setUpdateTime(new Date());
businessDocumentOrderDO.setDocumentDate(new Date());
// 设置默认值,避免空指针异常
if (businessDocumentOrderDO.getOrderShippingType() == null) {
businessDocumentOrderDO.setOrderShippingType(1L); // 默认设置为1
}
if (businessDocumentOrderDO.getInfoFeePayeeType() == null) {
businessDocumentOrderDO.setInfoFeePayeeType(0L); // 默认设置为0
}
// 5. 直接创建业务单记录(不使用ApplicationService
BusinessDocumentOrder businessDocumentOrder = new BusinessDocumentOrder();
BeanUtils.copyProperties(businessDocumentOrderDO, businessDocumentOrder);
businessDocumentOrder.setId(null); // 确保是新记录
businessDocumentOrder.setCreateBy(Long.valueOf(loginUser.getUserid()));
businessDocumentOrder.setCreateByName(loginUser.getUsername());
businessDocumentOrder.setCreateTime(new Date());
businessDocumentOrder.setUpdateTime(new Date());
businessDocumentOrder.setDelFlag(1);
boolean insertResult = businessDocumentOrderService.save(businessDocumentOrder);
if (!insertResult) {
throw new ServiceException("创建业务单失败");
}
// 6. 处理货物和地址信息(借鉴BusinessDocumentOrderDomainService的方法)
// 先查询刚创建的业务单ID
LambdaQueryWrapper<BusinessDocumentOrder> orderQueryWrapper = new LambdaQueryWrapper<>();
orderQueryWrapper.eq(BusinessDocumentOrder::getGoodsNumber, businessDocumentOrderDO.getGoodsNumber());
BusinessDocumentOrder createdOrder = businessDocumentOrderService.getOne(orderQueryWrapper);
if (createdOrder == null) {
throw new ServiceException("创建业务单后查询失败");
}
// 处理货物信息(从预约单获取)
// handleCargoInfoFromReservation(createdOrder.getId(), reservationOrder.getId());
// 处理地址信息(从预约单获取)
handleAddressInfoFromReservation(createdOrder.getId(), reservationOrder.getId());
// 7. 更新预约单状态
reservationOrder.setOrderType(1); // 设置为业务单类型
reservationOrder.setBusinessOrderId(businessDocumentOrder.getId()); // 关联业务单ID
reservationOrder.setBusinessOrderNumber(businessDocumentOrder.getGoodsNumber()); // 关联业务单号
reservationOrder.setUpdateTime(new Date());
reservationOrder.setUpdateBy(String.valueOf(loginUser.getUserid()));
int updateResult = resevationOrderMapper.updateById(reservationOrder);
if (updateResult <= 0) {
throw new ServiceException("更新预约单状态失败");
}
// 8. 转换并返回业务单PO
BusinessDocumentOrderPO businessDocumentOrderPO = new BusinessDocumentOrderPO();
BeanUtils.copyProperties(businessDocumentOrder, businessDocumentOrderPO);
return businessDocumentOrderPO;
} }
@Override
public boolean saveOrUpdateBatch(Collection<ReservationOrder> entityList, int batchSize) {
return false;
}
@Override
public boolean updateBatchById(Collection<ReservationOrder> entityList, int batchSize) {
return false;
}
@Override
public boolean saveOrUpdate(ReservationOrder entity) {
return false;
}
@Override
public ReservationOrder getOne(Wrapper<ReservationOrder> queryWrapper, boolean throwEx) {
return null;
}
@Override
public Map<String, Object> getMap(Wrapper<ReservationOrder> queryWrapper) {
return Collections.emptyMap();
}
@Override
public <V> V getObj(Wrapper<ReservationOrder> queryWrapper, Function<? super Object, V> mapper) {
return null;
}
@Override
public BaseMapper<ReservationOrder> getBaseMapper() {
return null;
}
private void saveAddress2CargoInfo(String id, List<OmsCargoInfoDTO> cargoInfoList, List<OmsAddressMultiDTO> loadingAddressList, List<OmsAddressMultiDTO> unloadAddressList) { private void saveAddress2CargoInfo(String id, List<OmsCargoInfoDTO> cargoInfoList, List<OmsAddressMultiDTO> loadingAddressList, List<OmsAddressMultiDTO> unloadAddressList) {
//根据ID先删除货物、装卸货信息 //根据ID先删除货物、装卸货信息
@@ -1189,7 +1348,111 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
// } // }
// return serviceRequire.toString(); // return serviceRequire.toString();
// } // }
@Override
public Result<?> batchConfirmReservationOrder(List<String> goodsNumbers) {
BatchConfirmResult result = new BatchConfirmResult();
result.setTotal(goodsNumbers.size());
result.setSuccessList(new ArrayList<>());
result.setFailList(new ArrayList<>());
// 同步处理,避免线程池问题
for (String goodsNumber : goodsNumbers) {
try {
BusinessDocumentOrderPO businessOrder = confirmReservationOrder(goodsNumber);
result.getSuccessList().add(businessOrder);
result.setSuccessCount(result.getSuccessCount() + 1);
} catch (Exception e) {
result.getFailList().add(new BatchConfirmResult.FailItem(goodsNumber, e.getMessage()));
result.setFailCount(result.getFailCount() + 1);
}
}
// 返回成功结果,包含详细的统计信息
if (result.getFailCount() == 0) {
Result<Object> successResult = new Result<>();
successResult.success("批量确认成功");
successResult.setResult(result);
return successResult;
} else {
// 如果有失败项,返回错误状态,包含成功和失败的信息
Result<Object> errorResult = new Result<>();
errorResult.error500("部分确认失败,成功: " + result.getSuccessCount() + ", 失败: " + result.getFailCount());
errorResult.setResult(result);
return errorResult;
}
}
/**
* 从预约单处理货物信息到业务单
*/
private void handleCargoInfoFromReservation(Long businessOrderId, Long reservationOrderId) {
// 查询预约单的货物信息
LambdaQueryWrapper<ReservationCargoInfo> cargoQueryWrapper = new LambdaQueryWrapper<>();
cargoQueryWrapper.eq(ReservationCargoInfo::getOrderId, reservationOrderId);
List<ReservationCargoInfo> reservationCargoList = reservationCargoInfoMapper.selectList(cargoQueryWrapper);
if (CollectionUtils.isEmpty(reservationCargoList)) {
return;
}
// 直接保存到业务单货物表,排除数据库中不存在的字段
for (ReservationCargoInfo reservationCargo : reservationCargoList) {
BusinessDocumentCargoMulti businessCargo = new BusinessDocumentCargoMulti();
// 只拷贝数据库中存在的字段,排除cargoNum等不存在的字段
businessCargo.setOrganizationId(reservationCargo.getOrganizationId());
businessCargo.setOrganizationName(reservationCargo.getOrganizationName());
businessCargo.setTopOrganizationId(reservationCargo.getTopOrganizationId());
// businessCargo.setLayInfoId(reservationCargo.getLayInfoId());
businessCargo.setGoodsTypeId(reservationCargo.getGoodsTypeId());
businessCargo.setGoodsType(reservationCargo.getGoodsType());
businessCargo.setGoodsNameId(reservationCargo.getGoodsNameId());
businessCargo.setGoodsName(reservationCargo.getGoodsName());
businessCargo.setCargoWeight(reservationCargo.getCargoWeight());
businessCargo.setCargoName(reservationCargo.getCargoName());
businessCargo.setCargoUnitId(reservationCargo.getCargoUnitId());
businessCargo.setCargoUnitName(reservationCargo.getCargoUnitName());
// businessCargo.setWeight(reservationCargo.getWeight());
businessCargo.setWeightUnitId(reservationCargo.getWeightUnitId());
businessCargo.setWeightUnit(reservationCargo.getWeightUnit());
businessCargo.setQuantityUnitId(reservationCargo.getQuantityUnitId());
businessCargo.setQuantityUnit(reservationCargo.getQuantityUnit());
businessCargo.setMachineCode(reservationCargo.getMachineCode());
// businessCargo.setMaterialCode(reservationCargo.getMaterialCode());
businessCargo.setId(Long.valueOf(IdUtil.getSnowflakeNextIdStr()));
businessCargo.setOrderId(String.valueOf(businessOrderId));
businessCargo.setCreateTime(new Date());
businessCargo.setUpdateTime(new Date());
businessCargo.setDelFlag(1); // 设置删除标志
businessDocumentCargoMultiMapper.insert(businessCargo);
}
}
/**
* 从预约单处理地址信息到业务单
*/
private void handleAddressInfoFromReservation(Long businessOrderId, Long reservationOrderId) {
// 查询预约单的地址信息
LambdaQueryWrapper<ReservationAddressMulti> addressQueryWrapper = new LambdaQueryWrapper<>();
addressQueryWrapper.eq(ReservationAddressMulti::getOrderId, reservationOrderId);
List<ReservationAddressMulti> reservationAddressList = reservationAddressMultiMapper.selectList(addressQueryWrapper);
if (CollectionUtils.isEmpty(reservationAddressList)) {
return;
}
// 直接保存到业务单地址表
for (ReservationAddressMulti reservationAddress : reservationAddressList) {
BusinessDocumentAddressMulti businessAddress = new BusinessDocumentAddressMulti();
BeanUtils.copyProperties(reservationAddress, businessAddress, "id");
businessAddress.setId(Long.valueOf(IdUtil.getSnowflakeNextIdStr()));
businessAddress.setOrderId(String.valueOf(businessOrderId));
businessAddress.setCreateTime(new Date());
businessAddress.setUpdateTime(new Date());
businessDocumentAddressMultiMapper.insert(businessAddress);
}
}
} }
@@ -0,0 +1,27 @@
package com.mhd.oms.domain.reservationOrder.service;
import com.mhd.oms.domain.reservationOrder.repository.mapper.ReservationDocumentOrderMapper;
import com.mhd.oms.domain.reservationOrder.repository.po.ReservationOrderPO;
import com.mhd.oms.interfaces.dto.resevationOrder.OmsOrderDTO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @author: brb
* @description:
* @create: 2026-02-10 17:54
*/
@Service
public class ReservationOrderDomainService {
@Resource
private ReservationDocumentOrderMapper reservationDocumentOrderMapper;
public List<ReservationOrderPO> queryList(OmsOrderDTO omsOrderDTO) {
return reservationDocumentOrderMapper.queryList(omsOrderDTO);
}
}
@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel; import com.mhd.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; 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;
/** /**
@@ -15,6 +17,7 @@ import java.util.List;
* @description: * @description:
* @create: 2026-01-26 10:50 * @create: 2026-01-26 10:50
*/ */
@Data
public class OmsOrderDTO { public class OmsOrderDTO {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@TableId(type = IdType.ID_WORKER_STR) @TableId(type = IdType.ID_WORKER_STR)
@@ -26,6 +29,16 @@ public class OmsOrderDTO {
// //
// @ApiModelProperty(value = "运距(千米)") // @ApiModelProperty(value = "运距(千米)")
// private BigDecimal haulDistance; // private BigDecimal haulDistance;
@ApiModelProperty(value = "订单开始时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date createStartTime;
@ApiModelProperty(value = "订单结束时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date createEndTime;
@ApiModelProperty("货源单号")
private String goodsNumber;
@ApiModelProperty(value = "装货地县区编码",required = true) @ApiModelProperty(value = "装货地县区编码",required = true)
private String loadingAreaId=""; private String loadingAreaId="";
@ApiModelProperty(value = "装货地详细地址") @ApiModelProperty(value = "装货地详细地址")
@@ -473,5 +486,305 @@ public class OmsOrderDTO {
@ApiModelProperty("费用科目明细") @ApiModelProperty("费用科目明细")
private List<OmsOrderAccount> tmsOrderAccountList; private List<OmsOrderAccount> tmsOrderAccountList;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String loadingName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String loadingUnit;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String unloadName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsUntis;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String transportationName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String carTypeName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String serviceRequire;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isSource;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date sourceCloseTime;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String executorId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isDelete;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String lineTitleLeft;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String lineTitleRight;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String sysOrgCode;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isCommon;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsTypeMajor;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long auditStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal collectedFreight;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal uncollectedFreight;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal collectLessFreight;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String auditBy;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date auditTime;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String businessType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String createrName;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String createrPhone;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isElectricFence;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String wxaQrcode;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String createUserId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String signatureAddress;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String qrCodeImgUrl;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String dispatchOrderNumber;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String appointDriverEnterpriseId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String appointDriverEnterprise;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String cancelOrderRemark;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String orderDriverId;
@ApiModelProperty("业务单状态 0-待审核 1-待执行 2-进行中 3-已完成 4-已取消 5-已拦截")
private Long orderStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long splicingOrderType;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long splicingStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String mainOrderId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String mainOrderNum;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String mergeOrderId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String mergeOrderNum;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long infoFeeStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String infoFeeDocumentNumber;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long settlementStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date settlementTime;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Date paymentTime;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String reconciliationInnerNumber;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String receivePaymentNumber;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String invoiceId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long isInvoice;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long biddingStatus;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String biddingRemarks;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal cargoInsuranceAmount;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String destination;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal freightCharges;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String payer;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String goodsCategory;
@ApiModelProperty( "审核状态 0-未审核 1-审核通过 2-已驳回")
private Long reviewStatus;
@ApiModelProperty("审核时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date reviewTime;
@ApiModelProperty("审核人id")
private Long reviewId;
@ApiModelProperty("审核人")
private String review;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private Long EXECUTE_STATUS;
@ApiModelProperty( "执行状态 0-无状态 1-未执行 2-已执行 3-已下发")
private Long executeStatus;
@ApiModelProperty("执行时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date executeTime;
@ApiModelProperty("执行人id")
private Long executeId;
@ApiModelProperty("审核人")
private String executor;
@ApiModelProperty("业务单id")
private Long businesssOrderId ;
@ApiModelProperty("业务单号")
private String businessOrderNumber;
} }
@@ -0,0 +1,67 @@
package com.mhd.oms.interfaces.facade.resevationOrder;
import com.mhd.oms.domain.businessDocumentOrder.repository.po.BusinessDocumentOrderPO;
import lombok.Data;
import java.util.List;
/**
* 批量确认预约单结果
*/
@Data
public class BatchConfirmResult {
/**
* 成功确认的业务单列表
*/
private List<BusinessDocumentOrderPO> successList;
/**
* 确认失败的预约单及错误信息
*/
private List<FailItem> failList;
/**
* 总处理数量
*/
private int total;
/**
* 成功数量
*/
private int successCount;
/**
* 失败数量
*/
private int failCount;
/**
* 失败项
*/
@Data
public static class FailItem {
/**
* 预约单号
*/
private String goodsNumber;
/**
* 失败原因
*/
private String errorMsg;
public FailItem() {}
public FailItem(String goodsNumber, String errorMsg) {
this.goodsNumber = goodsNumber;
this.errorMsg = errorMsg;
}
}
public BatchConfirmResult() {
this.total = 0;
this.successCount = 0;
this.failCount = 0;
}
}
@@ -3,19 +3,22 @@ package com.mhd.oms.interfaces.facade.resevationOrder;
import com.aliyun.oss.ServiceException; import com.aliyun.oss.ServiceException;
import com.mhd.common.core.utils.sms.CommonConstant; import com.mhd.common.core.utils.sms.CommonConstant;
import com.mhd.common.core.utils.sms.Result; import com.mhd.common.core.utils.sms.Result;
import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.common.security.utils.SecurityUtils; import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.oms.domain.reservationOrder.repository.facade.IOmsAddressMultiService; import com.mhd.oms.domain.reservationOrder.repository.facade.IOmsAddressMultiService;
import com.mhd.oms.domain.reservationOrder.repository.po.ReservationOrderPO;
import com.mhd.oms.interfaces.dto.resevationOrder.OmsOrderAddDTO; import com.mhd.oms.interfaces.dto.resevationOrder.OmsOrderAddDTO;
import com.mhd.oms.interfaces.dto.resevationOrder.OmsOrderDTO;
import com.mhd.system.api.domain.TmsTransportNote; import com.mhd.system.api.domain.TmsTransportNote;
import com.mhd.system.api.model.LoginUser; import com.mhd.system.api.model.LoginUser;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody; import com.mhd.common.core.web.controller.BaseController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
import com.mhd.common.core.web.domain.AjaxResult;
//import static com.mhd.common.core.utils.PageUtils.startPage;
/** /**
* @author: brb * @author: brb
@@ -25,7 +28,7 @@ import javax.annotation.Resource;
@RestController @RestController
@RequestMapping("/resevationOrderApi") @RequestMapping("/resevationOrderApi")
@Slf4j @Slf4j
public class ResevationOrderApi { public class ResevationOrderApi extends BaseController{
@Resource @Resource
private IOmsAddressMultiService omsAddressMultiService; private IOmsAddressMultiService omsAddressMultiService;
@@ -78,5 +81,42 @@ public class ResevationOrderApi {
return result; return result;
} }
/**
* 分页查询【业务单】列表
*/
@ApiOperation("查询【预约单】列表")
@GetMapping("/list")
public TableDataInfo list(OmsOrderDTO omsOrderDTO)
{
//转换实体
startPage();
List<ReservationOrderPO> list = omsAddressMultiService.queryList(omsOrderDTO);
return getDataTable(list);
}
/**
* 批量确认预约单,生成业务单
*/
@ApiOperation("批量确认预约单")
@PostMapping("/batchConfirm")
public Result<?> batchConfirm(@RequestBody List<String> goodsNumbers) {
Result<?> result = new Result<>();
try {
if (goodsNumbers == null || goodsNumbers.isEmpty()) {
result.error500("预约单号列表不能为空");
return result;
}
// 调用服务层方法 - 现在服务层直接返回Result
return omsAddressMultiService.batchConfirmReservationOrder(goodsNumbers);
} catch (ServiceException e) {
result.error500("批量确认失败: " + e.getErrorMessage());
} catch (Exception e) {
result.error500("批量确认失败: " + e.getMessage());
}
return result;
}
} }
@@ -9,9 +9,9 @@
#{item.layTime},#{item.layTimeId},#{item.layType},#{item.sort}, now(), now(), #{item.shortName}) #{item.layTime},#{item.layTimeId},#{item.layType},#{item.sort}, now(), now(), #{item.shortName})
</foreach> </foreach>
</insert> </insert>
<select id="selectRouteNameByRouteId" resultType="java.lang.String">
select route_name from NGWL_TEST_WLHY.TMS_ROUTE where id = #{routeId}
</select>
</mapper> </mapper>
@@ -0,0 +1,476 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mhd.oms.domain.reservationOrder.repository.mapper.ReservationDocumentOrderMapper">
<!-- com.mhd.oms.domain.reservationOrder.repository.mapper.ReservationDocumentOrderMapper-->
<select id="queryList" resultType="com.mhd.oms.domain.reservationOrder.repository.po.ReservationOrderPO">
select * from reservation_order
<include refid="findAll"></include>
</select>
<sql id="findAll">
<where>
<if test="id != null ">
and ID = #{id}
</if>
<!-- <if test="realCreateBy != null and realCreateBy != ''">-->
<!-- and REAL_CREATE_BY = #{realCreateBy}-->
<!-- </if>-->
<!-- <if test="realCreateName != null and realCreateName != ''">-->
<!-- and REAL_CREATE_NAME like concat('%', #{realCreateName}, '%')-->
<!-- </if>-->
<if test="createStartTime != null">
and CREATE_TIME &gt;= #{createStartTime}
</if>
<if test="createEndTime != null">
<!-- 替换为达梦支持的 DATEADD 嵌套写法,效果和原逻辑一致 -->
and CREATE_TIME &lt;= DATEADD(SECOND, -1, DATEADD(DAY, 1, #{createEndTime}))
</if>
<!-- <if test="updateTime != null ">-->
<!-- and UPDATE_TIME = #{updateTime}-->
<!-- </if>-->
<if test="goodsNumber != null and goodsNumber != ''">
and GOODS_NUMBER = #{goodsNumber}
</if>
<if test="loadingAreaId != null and loadingAreaId != ''">
and LOADING_AREA_ID = #{loadingAreaId}
</if>
<if test="loadingName != null and loadingName != ''">
and LOADING_NAME like concat('%', #{loadingName}, '%')
</if>
<if test="loadingAddress != null and loadingAddress != ''">
and LOADING_ADDRESS = #{loadingAddress}
</if>
<if test="loadingLongitude != null and loadingLongitude != ''">
and LOADING_LONGITUDE = #{loadingLongitude}
</if>
<if test="loadingLatitude != null and loadingLatitude != ''">
and LOADING_LATITUDE = #{loadingLatitude}
</if>
<if test="loadingUnit != null and loadingUnit != ''">
and LOADING_UNIT = #{loadingUnit}
</if>
<if test="freighterName != null and freighterName != ''">
and FREIGHTER_NAME like concat('%', #{freighterName}, '%')
</if>
<if test="loadingPhone != null and loadingPhone != ''">
and LOADING_PHONE = #{loadingPhone}
</if>
<if test="loadingDate != null ">
and LOADING_DATE = #{loadingDate}
</if>
<if test="unloadAreaId != null and unloadAreaId != ''">
and UNLOAD_AREA_ID = #{unloadAreaId}
</if>
<if test="unloadName != null and unloadName != ''">
and UNLOAD_NAME like concat('%', #{unloadName}, '%')
</if>
<if test="unloadAddress != null and unloadAddress != ''">
and UNLOAD_ADDRESS = #{unloadAddress}
</if>
<if test="unloadLongitude != null and unloadLongitude != ''">
and UNLOAD_LONGITUDE = #{unloadLongitude}
</if>
<if test="unloadLatitude != null and unloadLatitude != ''">
and UNLOAD_LATITUDE = #{unloadLatitude}
</if>
<if test="dischargerName != null and dischargerName != ''">
and DISCHARGER_NAME like concat('%', #{dischargerName}, '%')
</if>
<if test="unloadPhone != null and unloadPhone != ''">
and UNLOAD_PHONE = #{unloadPhone}
</if>
<if test="unloadingData != null ">
and UNLOADING_DATA = #{unloadingData}
</if>
<if test="goodsTypeId != null and goodsTypeId != ''">
and GOODS_TYPE_ID = #{goodsTypeId}
</if>
<if test="goodsType != null and goodsType != ''">
and GOODS_TYPE = #{goodsType}
</if>
<if test="goodsNameId != null and goodsNameId != ''">
and GOODS_NAME_ID = #{goodsNameId}
</if>
<if test="goodsName != null and goodsName != ''">
and GOODS_NAME like concat('%', #{goodsName}, '%')
</if>
<if test="weightMin != null ">
and WEIGHT_MIN = #{weightMin}
</if>
<if test="weightMax != null ">
and WEIGHT_MAX = #{weightMax}
</if>
<if test="goodsUntisId != null and goodsUntisId != ''">
and GOODS_UNTIS_ID = #{goodsUntisId}
</if>
<if test="goodsUntis != null and goodsUntis != ''">
and GOODS_UNTIS = #{goodsUntis}
</if>
<if test="transportationModeId != null ">
and TRANSPORTATION_MODE_ID = #{transportationModeId}
</if>
<if test="transportationName != null and transportationName != ''">
and TRANSPORTATION_NAME like concat('%', #{transportationName}, '%')
</if>
<if test="carType != null and carType != ''">
and CAR_TYPE = #{carType}
</if>
<if test="carTypeName != null and carTypeName != ''">
and CAR_TYPE_NAME like concat('%', #{carTypeName}, '%')
</if>
<if test="serviceRequireId != null and serviceRequireId != ''">
and SERVICE_REQUIRE_ID = #{serviceRequireId}
</if>
<if test="serviceRequire != null and serviceRequire != ''">
and SERVICE_REQUIRE = #{serviceRequire}
</if>
<if test="remarks != null and remarks != ''">
and REMARKS = #{remarks}
</if>
<if test="waybillFrom != null ">
and WAYBILL_FROM = #{waybillFrom}
</if>
<if test="isSource != null ">
and IS_SOURCE = #{isSource}
</if>
<if test="sourceCloseTime != null ">
and SOURCE_CLOSE_TIME = #{sourceCloseTime}
</if>
<if test="executorId != null and executorId != ''">
and EXECUTOR_ID = #{executorId}
</if>
<if test="isDelete != null ">
and IS_DELETE = #{isDelete}
</if>
<if test="lineTitleLeft != null and lineTitleLeft != ''">
and LINE_TITLE_LEFT = #{lineTitleLeft}
</if>
<if test="lineTitleRight != null and lineTitleRight != ''">
and LINE_TITLE_RIGHT = #{lineTitleRight}
</if>
<if test="sysOrgCode != null and sysOrgCode != ''">
and SYS_ORG_CODE = #{sysOrgCode}
</if>
<if test="isCommon != null ">
and IS_COMMON = #{isCommon}
</if>
<if test="goodsTypeMajor != null and goodsTypeMajor != ''">
and GOODS_TYPE_MAJOR = #{goodsTypeMajor}
</if>
<if test="auditStatus != null ">
and AUDIT_STATUS = #{auditStatus}
</if>
<if test="waybillMode != null ">
and WAYBILL_MODE = #{waybillMode}
</if>
<if test="latestBiddingTime != null ">
and LATEST_BIDDING_TIME = #{latestBiddingTime}
</if>
<if test="deliveryFreight != null ">
and DELIVERY_FREIGHT = #{deliveryFreight}
</if>
<if test="collectedFreight != null ">
and COLLECTED_FREIGHT = #{collectedFreight}
</if>
<if test="uncollectedFreight != null ">
and UNCOLLECTED_FREIGHT = #{uncollectedFreight}
</if>
<if test="collectLessFreight != null ">
and COLLECT_LESS_FREIGHT = #{collectLessFreight}
</if>
<if test="auditBy != null and auditBy != ''">
and AUDIT_BY = #{auditBy}
</if>
<if test="auditTime != null ">
and AUDIT_TIME = #{auditTime}
</if>
<if test="businessType != null and businessType != ''">
and BUSINESS_TYPE = #{businessType}
</if>
<if test="transportationUnitPrice != null ">
and TRANSPORTATION_UNIT_PRICE = #{transportationUnitPrice}
</if>
<if test="radioValue != null ">
and RADIO_VALUE = #{radioValue}
</if>
<if test="createrName != null and createrName != ''">
and CREATER_NAME like concat('%', #{createrName}, '%')
</if>
<if test="createrPhone != null and createrPhone != ''">
and CREATER_PHONE = #{createrPhone}
</if>
<if test="isElectricFence != null ">
and IS_ELECTRIC_FENCE = #{isElectricFence}
</if>
<if test="wxaQrcode != null and wxaQrcode != ''">
and WXA_QRCODE = #{wxaQrcode}
</if>
<if test="appointShipperId != null and appointShipperId != ''">
and APPOINT_SHIPPER_ID = #{appointShipperId}
</if>
<if test="createUserId != null and createUserId != ''">
and CREATE_USER_ID = #{createUserId}
</if>
<if test="appointShipper != null and appointShipper != ''">
and APPOINT_SHIPPER = #{appointShipper}
</if>
<if test="isStatus != null ">
and IS_STATUS = #{isStatus}
</if>
<if test="signatureAddress != null and signatureAddress != ''">
and SIGNATURE_ADDRESS = #{signatureAddress}
</if>
<if test="qrCodeImgUrl != null and qrCodeImgUrl != ''">
and QR_CODE_IMG_URL = #{qrCodeImgUrl}
</if>
<if test="shippingNote != null and shippingNote != ''">
and SHIPPING_NOTE = #{shippingNote}
</if>
<if test="receivableType != null ">
and RECEIVABLE_TYPE = #{receivableType}
</if>
<if test="thirdPartyOrderNumber != null and thirdPartyOrderNumber != ''">
and THIRD_PARTY_ORDER_NUMBER = #{thirdPartyOrderNumber}
</if>
<if test="dispatchOrderNumber != null and dispatchOrderNumber != ''">
and DISPATCH_ORDER_NUMBER = #{dispatchOrderNumber}
</if>
<if test="appointDriverEnterpriseId != null and appointDriverEnterpriseId != ''">
and APPOINT_DRIVER_ENTERPRISE_ID = #{appointDriverEnterpriseId}
</if>
<if test="appointDriverEnterprise != null and appointDriverEnterprise != ''">
and APPOINT_DRIVER_ENTERPRISE = #{appointDriverEnterprise}
</if>
<if test="cancelOrderRemark != null and cancelOrderRemark != ''">
and CANCEL_ORDER_REMARK = #{cancelOrderRemark}
</if>
<if test="orderDriverId != null and orderDriverId != ''">
and ORDER_DRIVER_ID = #{orderDriverId}
</if>
<if test="goodsQuantity != null ">
and GOODS_QUANTITY = #{goodsQuantity}
</if>
<if test="goodsQuantityUnitId != null and goodsQuantityUnitId != ''">
and GOODS_QUANTITY_UNIT_ID = #{goodsQuantityUnitId}
</if>
<if test="goodsQuantityUnit != null and goodsQuantityUnit != ''">
and GOODS_QUANTITY_UNIT = #{goodsQuantityUnit}
</if>
<if test="biddingUnit != null and biddingUnit != ''">
and BIDDING_UNIT = #{biddingUnit}
</if>
<if test="orderStatus != null ">
and ORDER_STATUS = #{orderStatus}
</if>
<if test="splicingOrderType != null ">
and SPLICING_ORDER_TYPE = #{splicingOrderType}
</if>
<if test="splicingStatus != null ">
and SPLICING_STATUS = #{splicingStatus}
</if>
<if test="mainOrderId != null and mainOrderId != ''">
and MAIN_ORDER_ID = #{mainOrderId}
</if>
<if test="mainOrderNum != null and mainOrderNum != ''">
and MAIN_ORDER_NUM = #{mainOrderNum}
</if>
<if test="mergeOrderId != null and mergeOrderId != ''">
and MERGE_ORDER_ID = #{mergeOrderId}
</if>
<if test="mergeOrderNum != null and mergeOrderNum != ''">
and MERGE_ORDER_NUM = #{mergeOrderNum}
</if>
<if test="payerType != null ">
and PAYER_TYPE = #{payerType}
</if>
<if test="machineNumber != null and machineNumber != ''">
and MACHINE_NUMBER = #{machineNumber}
</if>
<if test="stockFlag != null ">
and STOCK_FLAG = #{stockFlag}
</if>
<if test="infoFee != null ">
and INFO_FEE = #{infoFee}
</if>
<if test="infoFeePayeeType != null ">
and INFO_FEE_PAYEE_TYPE = #{infoFeePayeeType}
</if>
<if test="infoFeePayee != null and infoFeePayee != ''">
and INFO_FEE_PAYEE = #{infoFeePayee}
</if>
<if test="infoFeeStatus != null ">
and INFO_FEE_STATUS = #{infoFeeStatus}
</if>
<if test="infoFeeDocumentNumber != null and infoFeeDocumentNumber != ''">
and INFO_FEE_DOCUMENT_NUMBER = #{infoFeeDocumentNumber}
</if>
<if test="orderShippingType != null ">
and ORDER_SHIPPING_TYPE = #{orderShippingType}
</if>
<if test="recipientId != null and recipientId != ''">
and RECIPIENT_ID = #{recipientId}
</if>
<if test="recipientName != null and recipientName != ''">
and RECIPIENT_NAME like concat('%', #{recipientName}, '%')
</if>
<if test="settlementStatus != null ">
and SETTLEMENT_STATUS = #{settlementStatus}
</if>
<if test="settlementTime != null ">
and SETTLEMENT_TIME = #{settlementTime}
</if>
<if test="paymentTime != null ">
and PAYMENT_TIME = #{paymentTime}
</if>
<if test="reconciliationInnerNumber != null and reconciliationInnerNumber != ''">
and RECONCILIATION_INNER_NUMBER = #{reconciliationInnerNumber}
</if>
<if test="receivePaymentNumber != null and receivePaymentNumber != ''">
and RECEIVE_PAYMENT_NUMBER = #{receivePaymentNumber}
</if>
<if test="invoiceId != null and invoiceId != ''">
and INVOICE_ID = #{invoiceId}
</if>
<if test="isInvoice != null ">
and IS_INVOICE = #{isInvoice}
</if>
<if test="vehicleTypeId != null and vehicleTypeId != ''">
and VEHICLE_TYPE_ID = #{vehicleTypeId}
</if>
<if test="vehicleTypeName != null and vehicleTypeName != ''">
and VEHICLE_TYPE_NAME like concat('%', #{vehicleTypeName}, '%')
</if>
<if test="carrier != null and carrier != ''">
and CARRIER = #{carrier}
</if>
<if test="carrierName != null and carrierName != ''">
and CARRIER_NAME like concat('%', #{carrierName}, '%')
</if>
<if test="szwlUserId != null ">
and SZWL_USER_ID = #{szwlUserId}
</if>
<if test="freightUnitPrice != null ">
and FREIGHT_UNIT_PRICE = #{freightUnitPrice}
</if>
<if test="biddingStatus != null ">
and BIDDING_STATUS = #{biddingStatus}
</if>
<if test="biddingRemarks != null and biddingRemarks != ''">
and BIDDING_REMARKS = #{biddingRemarks}
</if>
<if test="cargoInsuranceAmount != null ">
and CARGO_INSURANCE_AMOUNT = #{cargoInsuranceAmount}
</if>
<if test="destination != null and destination != ''">
and DESTINATION = #{destination}
</if>
<if test="freightCharges != null ">
and FREIGHT_CHARGES = #{freightCharges}
</if>
<if test="payer != null and payer != ''">
and PAYER = #{payer}
</if>
<if test="salesmanId != null and salesmanId != ''">
and SALESMAN_ID = #{salesmanId}
</if>
<if test="isDeclare != null ">
and IS_DECLARE = #{isDeclare}
</if>
<if test="route != null and route != ''">
and ROUTE = #{route}
</if>
<if test="containerType != null and containerType != ''">
and CONTAINER_TYPE = #{containerType}
</if>
<if test="containerTypeName != null and containerTypeName != ''">
and CONTAINER_TYPE_NAME like concat('%', #{containerTypeName}, '%')
</if>
<if test="cardType != null and cardType != ''">
and CARD_TYPE = #{cardType}
</if>
<if test="cardTypeName != null and cardTypeName != ''">
and CARD_TYPE_NAME like concat('%', #{cardTypeName}, '%')
</if>
<if test="externalContainerNo != null and externalContainerNo != ''">
and EXTERNAL_CONTAINER_NO = #{externalContainerNo}
</if>
<if test="transitPlace != null and transitPlace != ''">
and TRANSIT_PLACE = #{transitPlace}
</if>
<if test="shipper != null and shipper != ''">
and SHIPPER = #{shipper}
</if>
<if test="customsShipper != null and customsShipper != ''">
and CUSTOMS_SHIPPER = #{customsShipper}
</if>
<if test="customsShipperTel != null and customsShipperTel != ''">
and CUSTOMS_SHIPPER_TEL = #{customsShipperTel}
</if>
<if test="unloadingCompany != null and unloadingCompany != ''">
and UNLOADING_COMPANY = #{unloadingCompany}
</if>
<if test="contractNo != null and contractNo != ''">
and CONTRACT_NO = #{contractNo}
</if>
<if test="freightFee != null ">
and FREIGHT_FEE = #{freightFee}
</if>
<if test="unloadingFee != null ">
and UNLOADING_FEE = #{unloadingFee}
</if>
<if test="customsFee != null ">
and CUSTOMS_FEE = #{customsFee}
</if>
<if test="shortageFee != null ">
and SHORTAGE_FEE = #{shortageFee}
</if>
<if test="miscellaneousFee != null ">
and MISCELLANEOUS_FEE = #{miscellaneousFee}
</if>
<if test="otherFee != null ">
and OTHER_FEE = #{otherFee}
</if>
<if test="detentionFee != null ">
and DETENTION_FEE = #{detentionFee}
</if>
<if test="taxRate != null ">
and TAX_RATE = #{taxRate}
</if>
<if test="settlementCurrency != null and settlementCurrency != ''">
and SETTLEMENT_CURRENCY = #{settlementCurrency}
</if>
<if test="volume != null ">
and VOLUME = #{volume}
</if>
<if test="detailContent != null and detailContent != ''">
and DETAIL_CONTENT = #{detailContent}
</if>
<if test="customsRoute != null and customsRoute != ''">
and CUSTOMS_ROUTE = #{customsRoute}
</if>
<if test="customsPort != null and customsPort != ''">
and CUSTOMS_PORT = #{customsPort}
</if>
<if test="customsContact != null and customsContact != ''">
and CUSTOMS_CONTACT = #{customsContact}
</if>
<if test="customsContactPhone != null and customsContactPhone != ''">
and CUSTOMS_CONTACT_PHONE = #{customsContactPhone}
</if>
<if test="customsRemark != null and customsRemark != ''">
and CUSTOMS_REMARK = #{customsRemark}
</if>
<if test="orgId != null and orgId != ''">
and ORG_ID = #{orgId}
</if>
<if test="goodsCategory != null and goodsCategory != ''">
and GOODS_CATEGORY = #{goodsCategory}
</if>
</where>
</sql>
</mapper>