From d970a01169602ea59f01df8a7318aec0a70627e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E8=BE=89?= <2830717623@qq.com> Date: Thu, 12 Feb 2026 08:35:41 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E5=8D=95=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=B8=8E=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/domain/po/UserShipperPo.java | 61 +- .../entity/ReservationOrder.java | 9 + .../facade/IOmsAddressMultiService.java | 26 +- .../mapper/ReservationAddressMultiMapper.java | 2 + .../ReservationDocumentOrderMapper.java | 12 + .../repository/po/ReservationOrderPO.java | 711 ++++++++++++++++++ .../service/OmsAddressMultiService.java | 361 +++++++-- .../ReservationOrderDomainService.java | 27 + .../dto/resevationOrder/OmsOrderDTO.java | 313 ++++++++ .../resevationOrder/BatchConfirmResult.java | 67 ++ .../resevationOrder/ResevationOrderApi.java | 52 +- .../ReservationAddressMultiMapper.xml | 6 +- .../ReservationDocumentOrderMapper.xml | 476 ++++++++++++ 13 files changed, 2063 insertions(+), 60 deletions(-) create mode 100644 mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/mapper/ReservationDocumentOrderMapper.java create mode 100644 mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/po/ReservationOrderPO.java create mode 100644 mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/service/ReservationOrderDomainService.java create mode 100644 mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/resevationOrder/BatchConfirmResult.java create mode 100644 mhd_oms/src/main/resources/mapper/reservationOrder/ReservationDocumentOrderMapper.xml diff --git a/mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/po/UserShipperPo.java b/mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/po/UserShipperPo.java index 0fa71bc7c..72525bfaf 100644 --- a/mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/po/UserShipperPo.java +++ b/mhd-common/mhd-common-core/src/main/java/com/mhd/common/core/domain/po/UserShipperPo.java @@ -2,10 +2,13 @@ package com.mhd.common.core.domain.po; import com.fasterxml.jackson.annotation.JsonFormat; import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.annotation.fieldsetvalue.NeedSetValue; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; @Data @@ -209,4 +212,60 @@ public class UserShipperPo { @ApiModelProperty(name = "客户nc编码") 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; + } + + diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/entity/ReservationOrder.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/entity/ReservationOrder.java index 746023b27..ca6bc2c5f 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/entity/ReservationOrder.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/entity/ReservationOrder.java @@ -504,6 +504,9 @@ public class ReservationOrder { @ApiModelProperty(value = "订单结算状态:1未出账、2已出账、3部分结算、4已结算") private Integer settlementStatus; + @ApiModelProperty(value = "订单类型:0-预约单,1-业务单") + private Integer orderType; + @ApiModelProperty(value = "订单运费结算时间") @JsonFormat(timezone = "GMT+8",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") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private java.util.Date documentDate; + + @ApiModelProperty("业务单id") + private Long businessOrderId; + + @ApiModelProperty("业务单号") + private String businessOrderNumber; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/facade/IOmsAddressMultiService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/facade/IOmsAddressMultiService.java index 17f12fcca..5e5b33540 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/facade/IOmsAddressMultiService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/facade/IOmsAddressMultiService.java @@ -1,15 +1,39 @@ package com.mhd.oms.domain.reservationOrder.repository.facade; 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.repository.po.ReservationOrderPO; 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.NoSuchAlgorithmException; import java.security.SignatureException; import java.security.spec.InvalidKeySpecException; +import com.mhd.oms.interfaces.facade.resevationOrder.BatchConfirmResult; -public interface IOmsAddressMultiService extends IService { +import java.util.List; + +public interface IOmsAddressMultiService { void save(OmsOrderAddDTO tmsOrderAddDTO) throws InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException; + + List queryList(OmsOrderDTO omsOrderDTO); + + /** + * 确认预约单,生成业务单 + * @param goodsNumber 预约单号 + * @return 业务单信息 + */ + BusinessDocumentOrderPO confirmReservationOrder(String goodsNumber); + + /** + * 批量确认预约单,生成业务单 + * @param goodsNumbers 预约单号列表 + * @return 批量处理结果 + */ + Result batchConfirmReservationOrder(List goodsNumbers); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/mapper/ReservationAddressMultiMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/mapper/ReservationAddressMultiMapper.java index 6d072732d..3d18b5f55 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/mapper/ReservationAddressMultiMapper.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/mapper/ReservationAddressMultiMapper.java @@ -8,4 +8,6 @@ import java.util.List; public interface ReservationAddressMultiMapper extends BaseMapper { void insertBatch(@Param("list") List addressMultiList); + + String selectRouteNameByRouteId(String route); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/mapper/ReservationDocumentOrderMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/mapper/ReservationDocumentOrderMapper.java new file mode 100644 index 000000000..058119bf3 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/mapper/ReservationDocumentOrderMapper.java @@ -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 { + + List queryList(OmsOrderDTO omsOrderDTO); +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/po/ReservationOrderPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/po/ReservationOrderPO.java new file mode 100644 index 000000000..5df9d9489 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/repository/po/ReservationOrderPO.java @@ -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; +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/service/OmsAddressMultiService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/service/OmsAddressMultiService.java index 3e6f92d3a..d3af7142b 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/service/OmsAddressMultiService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/service/OmsAddressMultiService.java @@ -1,17 +1,23 @@ package com.mhd.oms.domain.reservationOrder.service; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; 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.QueryWrapper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; //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.ReservationCargoInfo; 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.oms.domain.reservationOrder.repository.facade.IOmsAddressMultiService; 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.infrastructure.feign.ThirdPartyServiceFeign; //import com.mhd.oms.infrastructure.feign.TransportServiceFeign; 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.OrderSequence; 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 org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -46,8 +55,6 @@ import java.security.NoSuchAlgorithmException; import java.security.SignatureException; import java.security.spec.InvalidKeySpecException; import java.util.*; -import java.util.function.Function; -import java.util.stream.Collectors; import static org.reflections.Reflections.log; @@ -91,7 +98,21 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { @Resource 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")) { 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查询 @@ -215,6 +236,7 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { resevationOrder.setSettlementStatus(1);//未出账 resevationOrder.setAuditStatus(0);//未审核 resevationOrder.setSzwlUserId(Long.valueOf(swzlUserId)); + resevationOrder.setTransitPlace(tmsOrderAddDTO.getTransitPlace()); if (resevationOrder.getLoadingDate() != null && resevationOrder.getUnloadingData() != null) { if (resevationOrder.getUnloadingData().before(resevationOrder.getLoadingDate())) { throw new ServiceException("装货日期不能大于卸货日期!"); @@ -259,6 +281,8 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { resevationOrder.setRealCreateBy(String.valueOf(userPo.getUserId())); resevationOrder.setRealCreateName(userPo.getUserName()); resevationOrder.setAppointShipper(userShipperPoInfo.getShipperEnterpriseName());//20250-07-29修改:订单表委托方保存公司名字,而不是姓名 + resevationOrder.setUpdateTime(new Date()); + resevationOrder.setUpdateBy(String.valueOf(userShipperPoInfo.getShipperId())); String salesmanCodeNc = tmsOrderAddDTO.getSalesmanId(); if (salesmanCodeNc != null) { String makerCodeNc = tmsOrderServiceImpl.selectByMakerCodeNc(salesmanCodeNc); @@ -846,6 +870,27 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { } + @Override + public List 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 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的情况 * @param tmsOrderAddDTO @@ -1020,46 +1065,160 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { // } @Override - public boolean saveBatch(Collection entityList, int batchSize) { - return false; + public BusinessDocumentOrderPO confirmReservationOrder(String goodsNumber) { + // 1. 根据预约单号查询预约单信息 + LambdaQueryWrapper 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 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 entityList, int batchSize) { - return false; - } - - @Override - public boolean updateBatchById(Collection entityList, int batchSize) { - return false; - } - - @Override - public boolean saveOrUpdate(ReservationOrder entity) { - return false; - } - - @Override - public ReservationOrder getOne(Wrapper queryWrapper, boolean throwEx) { - return null; - } - - @Override - public Map getMap(Wrapper queryWrapper) { - return Collections.emptyMap(); - } - - @Override - public V getObj(Wrapper queryWrapper, Function mapper) { - return null; - } - - @Override - public BaseMapper getBaseMapper() { - return null; - } - - private void saveAddress2CargoInfo(String id, List cargoInfoList, List loadingAddressList, List unloadAddressList) { //根据ID先删除货物、装卸货信息 @@ -1189,7 +1348,111 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { // } // return serviceRequire.toString(); // } - - - + + + @Override + public Result batchConfirmReservationOrder(List 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 successResult = new Result<>(); + successResult.success("批量确认成功"); + successResult.setResult(result); + return successResult; + } else { + // 如果有失败项,返回错误状态,包含成功和失败的信息 + Result errorResult = new Result<>(); + errorResult.error500("部分确认失败,成功: " + result.getSuccessCount() + ", 失败: " + result.getFailCount()); + errorResult.setResult(result); + return errorResult; + } + } + + /** + * 从预约单处理货物信息到业务单 + */ + private void handleCargoInfoFromReservation(Long businessOrderId, Long reservationOrderId) { + // 查询预约单的货物信息 + LambdaQueryWrapper cargoQueryWrapper = new LambdaQueryWrapper<>(); + cargoQueryWrapper.eq(ReservationCargoInfo::getOrderId, reservationOrderId); + List 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 addressQueryWrapper = new LambdaQueryWrapper<>(); + addressQueryWrapper.eq(ReservationAddressMulti::getOrderId, reservationOrderId); + List 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); + } + } } + + diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/service/ReservationOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/service/ReservationOrderDomainService.java new file mode 100644 index 000000000..d9d1d5c6c --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationOrder/service/ReservationOrderDomainService.java @@ -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 queryList(OmsOrderDTO omsOrderDTO) { + + return reservationDocumentOrderMapper.queryList(omsOrderDTO); + + } +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsOrderDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsOrderDTO.java index 25bf65931..6f5f47bcb 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsOrderDTO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsOrderDTO.java @@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.annotation.TableId; 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; import java.util.List; /** @@ -15,6 +17,7 @@ import java.util.List; * @description: * @create: 2026-01-26 10:50 */ +@Data public class OmsOrderDTO { private static final long serialVersionUID = 1L; @TableId(type = IdType.ID_WORKER_STR) @@ -26,6 +29,16 @@ public class OmsOrderDTO { // // @ApiModelProperty(value = "运距(千米)") // 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) private String loadingAreaId=""; @ApiModelProperty(value = "装货地详细地址") @@ -473,5 +486,305 @@ public class OmsOrderDTO { @ApiModelProperty("费用科目明细") private List 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; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/resevationOrder/BatchConfirmResult.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/resevationOrder/BatchConfirmResult.java new file mode 100644 index 000000000..b40030242 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/resevationOrder/BatchConfirmResult.java @@ -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 successList; + + /** + * 确认失败的预约单及错误信息 + */ + private List 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; + } +} \ No newline at end of file diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/resevationOrder/ResevationOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/resevationOrder/ResevationOrderApi.java index 7a09ad3de..b64614c4a 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/resevationOrder/ResevationOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/resevationOrder/ResevationOrderApi.java @@ -3,19 +3,22 @@ package com.mhd.oms.interfaces.facade.resevationOrder; import com.aliyun.oss.ServiceException; import com.mhd.common.core.utils.sms.CommonConstant; 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.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.OmsOrderDTO; import com.mhd.system.api.domain.TmsTransportNote; import com.mhd.system.api.model.LoginUser; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - +import org.springframework.web.bind.annotation.*; +import com.mhd.common.core.web.controller.BaseController; 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 @@ -25,7 +28,7 @@ import javax.annotation.Resource; @RestController @RequestMapping("/resevationOrderApi") @Slf4j -public class ResevationOrderApi { +public class ResevationOrderApi extends BaseController{ @Resource private IOmsAddressMultiService omsAddressMultiService; @@ -78,5 +81,42 @@ public class ResevationOrderApi { return result; } + /** + * 分页查询【业务单】列表 + */ + @ApiOperation("查询【预约单】列表") + @GetMapping("/list") + public TableDataInfo list(OmsOrderDTO omsOrderDTO) + { + //转换实体 + startPage(); + List list = omsAddressMultiService.queryList(omsOrderDTO); + return getDataTable(list); + } + + + /** + * 批量确认预约单,生成业务单 + */ + @ApiOperation("批量确认预约单") + @PostMapping("/batchConfirm") + public Result batchConfirm(@RequestBody List 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; + } + } diff --git a/mhd_oms/src/main/resources/mapper/reservationOrder/ReservationAddressMultiMapper.xml b/mhd_oms/src/main/resources/mapper/reservationOrder/ReservationAddressMultiMapper.xml index 5d03881b6..65d76c0da 100644 --- a/mhd_oms/src/main/resources/mapper/reservationOrder/ReservationAddressMultiMapper.xml +++ b/mhd_oms/src/main/resources/mapper/reservationOrder/ReservationAddressMultiMapper.xml @@ -9,9 +9,9 @@ #{item.layTime},#{item.layTimeId},#{item.layType},#{item.sort}, now(), now(), #{item.shortName}) - - - + diff --git a/mhd_oms/src/main/resources/mapper/reservationOrder/ReservationDocumentOrderMapper.xml b/mhd_oms/src/main/resources/mapper/reservationOrder/ReservationDocumentOrderMapper.xml new file mode 100644 index 000000000..f58561cc8 --- /dev/null +++ b/mhd_oms/src/main/resources/mapper/reservationOrder/ReservationDocumentOrderMapper.xml @@ -0,0 +1,476 @@ + + + + + + + + + + + + and ID = #{id} + + + + + + + + + + + and CREATE_TIME >= #{createStartTime} + + + + and CREATE_TIME <= DATEADD(SECOND, -1, DATEADD(DAY, 1, #{createEndTime})) + + + + + + + and GOODS_NUMBER = #{goodsNumber} + + + and LOADING_AREA_ID = #{loadingAreaId} + + + and LOADING_NAME like concat('%', #{loadingName}, '%') + + + and LOADING_ADDRESS = #{loadingAddress} + + + and LOADING_LONGITUDE = #{loadingLongitude} + + + and LOADING_LATITUDE = #{loadingLatitude} + + + and LOADING_UNIT = #{loadingUnit} + + + and FREIGHTER_NAME like concat('%', #{freighterName}, '%') + + + and LOADING_PHONE = #{loadingPhone} + + + and LOADING_DATE = #{loadingDate} + + + and UNLOAD_AREA_ID = #{unloadAreaId} + + + and UNLOAD_NAME like concat('%', #{unloadName}, '%') + + + and UNLOAD_ADDRESS = #{unloadAddress} + + + and UNLOAD_LONGITUDE = #{unloadLongitude} + + + and UNLOAD_LATITUDE = #{unloadLatitude} + + + and DISCHARGER_NAME like concat('%', #{dischargerName}, '%') + + + and UNLOAD_PHONE = #{unloadPhone} + + + and UNLOADING_DATA = #{unloadingData} + + + and GOODS_TYPE_ID = #{goodsTypeId} + + + and GOODS_TYPE = #{goodsType} + + + and GOODS_NAME_ID = #{goodsNameId} + + + and GOODS_NAME like concat('%', #{goodsName}, '%') + + + and WEIGHT_MIN = #{weightMin} + + + and WEIGHT_MAX = #{weightMax} + + + and GOODS_UNTIS_ID = #{goodsUntisId} + + + and GOODS_UNTIS = #{goodsUntis} + + + and TRANSPORTATION_MODE_ID = #{transportationModeId} + + + and TRANSPORTATION_NAME like concat('%', #{transportationName}, '%') + + + and CAR_TYPE = #{carType} + + + and CAR_TYPE_NAME like concat('%', #{carTypeName}, '%') + + + and SERVICE_REQUIRE_ID = #{serviceRequireId} + + + and SERVICE_REQUIRE = #{serviceRequire} + + + and REMARKS = #{remarks} + + + and WAYBILL_FROM = #{waybillFrom} + + + and IS_SOURCE = #{isSource} + + + and SOURCE_CLOSE_TIME = #{sourceCloseTime} + + + and EXECUTOR_ID = #{executorId} + + + and IS_DELETE = #{isDelete} + + + and LINE_TITLE_LEFT = #{lineTitleLeft} + + + and LINE_TITLE_RIGHT = #{lineTitleRight} + + + and SYS_ORG_CODE = #{sysOrgCode} + + + and IS_COMMON = #{isCommon} + + + and GOODS_TYPE_MAJOR = #{goodsTypeMajor} + + + and AUDIT_STATUS = #{auditStatus} + + + and WAYBILL_MODE = #{waybillMode} + + + and LATEST_BIDDING_TIME = #{latestBiddingTime} + + + and DELIVERY_FREIGHT = #{deliveryFreight} + + + and COLLECTED_FREIGHT = #{collectedFreight} + + + and UNCOLLECTED_FREIGHT = #{uncollectedFreight} + + + and COLLECT_LESS_FREIGHT = #{collectLessFreight} + + + and AUDIT_BY = #{auditBy} + + + and AUDIT_TIME = #{auditTime} + + + and BUSINESS_TYPE = #{businessType} + + + and TRANSPORTATION_UNIT_PRICE = #{transportationUnitPrice} + + + and RADIO_VALUE = #{radioValue} + + + and CREATER_NAME like concat('%', #{createrName}, '%') + + + and CREATER_PHONE = #{createrPhone} + + + and IS_ELECTRIC_FENCE = #{isElectricFence} + + + and WXA_QRCODE = #{wxaQrcode} + + + and APPOINT_SHIPPER_ID = #{appointShipperId} + + + and CREATE_USER_ID = #{createUserId} + + + and APPOINT_SHIPPER = #{appointShipper} + + + and IS_STATUS = #{isStatus} + + + and SIGNATURE_ADDRESS = #{signatureAddress} + + + and QR_CODE_IMG_URL = #{qrCodeImgUrl} + + + and SHIPPING_NOTE = #{shippingNote} + + + and RECEIVABLE_TYPE = #{receivableType} + + + and THIRD_PARTY_ORDER_NUMBER = #{thirdPartyOrderNumber} + + + and DISPATCH_ORDER_NUMBER = #{dispatchOrderNumber} + + + and APPOINT_DRIVER_ENTERPRISE_ID = #{appointDriverEnterpriseId} + + + and APPOINT_DRIVER_ENTERPRISE = #{appointDriverEnterprise} + + + and CANCEL_ORDER_REMARK = #{cancelOrderRemark} + + + and ORDER_DRIVER_ID = #{orderDriverId} + + + and GOODS_QUANTITY = #{goodsQuantity} + + + and GOODS_QUANTITY_UNIT_ID = #{goodsQuantityUnitId} + + + and GOODS_QUANTITY_UNIT = #{goodsQuantityUnit} + + + and BIDDING_UNIT = #{biddingUnit} + + + and ORDER_STATUS = #{orderStatus} + + + and SPLICING_ORDER_TYPE = #{splicingOrderType} + + + and SPLICING_STATUS = #{splicingStatus} + + + and MAIN_ORDER_ID = #{mainOrderId} + + + and MAIN_ORDER_NUM = #{mainOrderNum} + + + and MERGE_ORDER_ID = #{mergeOrderId} + + + and MERGE_ORDER_NUM = #{mergeOrderNum} + + + and PAYER_TYPE = #{payerType} + + + and MACHINE_NUMBER = #{machineNumber} + + + and STOCK_FLAG = #{stockFlag} + + + and INFO_FEE = #{infoFee} + + + and INFO_FEE_PAYEE_TYPE = #{infoFeePayeeType} + + + and INFO_FEE_PAYEE = #{infoFeePayee} + + + and INFO_FEE_STATUS = #{infoFeeStatus} + + + and INFO_FEE_DOCUMENT_NUMBER = #{infoFeeDocumentNumber} + + + and ORDER_SHIPPING_TYPE = #{orderShippingType} + + + and RECIPIENT_ID = #{recipientId} + + + and RECIPIENT_NAME like concat('%', #{recipientName}, '%') + + + and SETTLEMENT_STATUS = #{settlementStatus} + + + and SETTLEMENT_TIME = #{settlementTime} + + + and PAYMENT_TIME = #{paymentTime} + + + and RECONCILIATION_INNER_NUMBER = #{reconciliationInnerNumber} + + + and RECEIVE_PAYMENT_NUMBER = #{receivePaymentNumber} + + + and INVOICE_ID = #{invoiceId} + + + and IS_INVOICE = #{isInvoice} + + + and VEHICLE_TYPE_ID = #{vehicleTypeId} + + + and VEHICLE_TYPE_NAME like concat('%', #{vehicleTypeName}, '%') + + + and CARRIER = #{carrier} + + + and CARRIER_NAME like concat('%', #{carrierName}, '%') + + + and SZWL_USER_ID = #{szwlUserId} + + + and FREIGHT_UNIT_PRICE = #{freightUnitPrice} + + + and BIDDING_STATUS = #{biddingStatus} + + + and BIDDING_REMARKS = #{biddingRemarks} + + + and CARGO_INSURANCE_AMOUNT = #{cargoInsuranceAmount} + + + and DESTINATION = #{destination} + + + and FREIGHT_CHARGES = #{freightCharges} + + + and PAYER = #{payer} + + + and SALESMAN_ID = #{salesmanId} + + + and IS_DECLARE = #{isDeclare} + + + and ROUTE = #{route} + + + and CONTAINER_TYPE = #{containerType} + + + and CONTAINER_TYPE_NAME like concat('%', #{containerTypeName}, '%') + + + and CARD_TYPE = #{cardType} + + + and CARD_TYPE_NAME like concat('%', #{cardTypeName}, '%') + + + and EXTERNAL_CONTAINER_NO = #{externalContainerNo} + + + and TRANSIT_PLACE = #{transitPlace} + + + and SHIPPER = #{shipper} + + + and CUSTOMS_SHIPPER = #{customsShipper} + + + and CUSTOMS_SHIPPER_TEL = #{customsShipperTel} + + + and UNLOADING_COMPANY = #{unloadingCompany} + + + and CONTRACT_NO = #{contractNo} + + + and FREIGHT_FEE = #{freightFee} + + + and UNLOADING_FEE = #{unloadingFee} + + + and CUSTOMS_FEE = #{customsFee} + + + and SHORTAGE_FEE = #{shortageFee} + + + and MISCELLANEOUS_FEE = #{miscellaneousFee} + + + and OTHER_FEE = #{otherFee} + + + and DETENTION_FEE = #{detentionFee} + + + and TAX_RATE = #{taxRate} + + + and SETTLEMENT_CURRENCY = #{settlementCurrency} + + + and VOLUME = #{volume} + + + and DETAIL_CONTENT = #{detailContent} + + + and CUSTOMS_ROUTE = #{customsRoute} + + + and CUSTOMS_PORT = #{customsPort} + + + and CUSTOMS_CONTACT = #{customsContact} + + + and CUSTOMS_CONTACT_PHONE = #{customsContactPhone} + + + and CUSTOMS_REMARK = #{customsRemark} + + + and ORG_ID = #{orgId} + + + and GOODS_CATEGORY = #{goodsCategory} + + + + \ No newline at end of file