From 9793c0fd7114692f182d201c6461b7dd646efbe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E8=BE=89?= <2830717623@qq.com> Date: Fri, 13 Feb 2026 16:54:16 +0800 Subject: [PATCH] 0213oms --- .../entity/ReservationOrder.java | 5 ++ .../facade/IOmsAddressMultiService.java | 2 + .../repository/po/ReservationOrderPO.java | 27 ++++++ .../service/OmsAddressMultiService.java | 87 ++++++++++++++----- .../dto/resevationOrder/OmsCargoInfoDTO.java | 2 +- .../dto/resevationOrder/OmsOrderAddDTO.java | 5 ++ .../resevationOrder/ResevationOrderApi.java | 23 ++++- .../ReservationDocumentOrderMapper.xml | 2 + 8 files changed, 128 insertions(+), 25 deletions(-) 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 ca6bc2c5f..5c7f2d5c8 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 @@ -701,4 +701,9 @@ public class ReservationOrder { @ApiModelProperty("业务单号") private String businessOrderNumber; + + @ApiModelProperty("起运时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private java.util.Date departureTime; } 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 5e5b33540..e7c2b1654 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 @@ -36,4 +36,6 @@ public interface IOmsAddressMultiService { * @return 批量处理结果 */ Result batchConfirmReservationOrder(List goodsNumbers); + + Result batchRejectReservationOrder(List goodsNumbers); } 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 index 5df9d9489..7e1848a55 100644 --- 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 @@ -2,12 +2,14 @@ package com.mhd.oms.domain.reservationOrder.repository.po; import com.fasterxml.jackson.annotation.JsonFormat; import com.mhd.common.core.annotation.Excel; +import com.mhd.oms.domain.reservationOrder.entity.ReservationCargoInfo; 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; /** * @author: brb @@ -164,6 +166,26 @@ public class ReservationOrderPO { @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String carType; + @ApiModelProperty("$column.columnComment") + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private BigDecimal cargoNum; + + @ApiModelProperty("$column.columnComment") + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private BigDecimal cargoWeight; + + @ApiModelProperty("$column.columnComment") + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private String cargoUnitName; + + @ApiModelProperty("$column.columnComment") + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private String cargoContent; + + @ApiModelProperty("$column.columnComment") + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private List reservationCargoInfoList; + @ApiModelProperty("$column.columnComment") @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String carTypeName; @@ -708,4 +730,9 @@ public class ReservationOrderPO { @ApiModelProperty("预约单类型") private String orderType; + + @ApiModelProperty("起运时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private java.util.Date departureTime; } 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 d3af7142b..c1ecf088f 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 @@ -237,6 +237,8 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { resevationOrder.setAuditStatus(0);//未审核 resevationOrder.setSzwlUserId(Long.valueOf(swzlUserId)); resevationOrder.setTransitPlace(tmsOrderAddDTO.getTransitPlace()); + resevationOrder.setOrderShippingType(tmsOrderAddDTO.getOrderShippingType()); + resevationOrder.setDepartureTime(tmsOrderAddDTO.getDepartureTime()); if (resevationOrder.getLoadingDate() != null && resevationOrder.getUnloadingData() != null) { if (resevationOrder.getUnloadingData().before(resevationOrder.getLoadingDate())) { throw new ServiceException("装货日期不能大于卸货日期!"); @@ -283,6 +285,7 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { resevationOrder.setAppointShipper(userShipperPoInfo.getShipperEnterpriseName());//20250-07-29修改:订单表委托方保存公司名字,而不是姓名 resevationOrder.setUpdateTime(new Date()); resevationOrder.setUpdateBy(String.valueOf(userShipperPoInfo.getShipperId())); + resevationOrder.setOrderType(0); String salesmanCodeNc = tmsOrderAddDTO.getSalesmanId(); if (salesmanCodeNc != null) { String makerCodeNc = tmsOrderServiceImpl.selectByMakerCodeNc(salesmanCodeNc); @@ -881,9 +884,19 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { } List reservationOrderPOS = reservationOrderDomainService.queryList(omsOrderDTO); for (ReservationOrderPO reservationOrderPO : reservationOrderPOS){ + List reservationCargoInfoList = reservationCargoInfoMapper.selectList(new LambdaQueryWrapper().eq(ReservationCargoInfo::getOrderId, reservationOrderPO.getId())); + if (reservationCargoInfoList != null) { +// reservationOrderPO.setGoodsName(reservationCargoInfo.getGoodsName()); +// reservationOrderPO.setCargoNum(reservationCargoInfo.getCargoNum()); +// reservationOrderPO.setCargoWeight(reservationCargoInfo.getCargoWeight()); +// reservationOrderPO.setCargoContent(reservationCargoInfo.getCargoContent()); +// reservationOrderPO.setCargoUnitName(reservationCargoInfo.getCargoUnitName()); + reservationOrderPO.setReservationCargoInfoList(reservationCargoInfoList); + } String route = reservationOrderPO.getRoute(); if (route != null && !route.isEmpty()){ String routeName = reservationAddressMultiMapper.selectRouteNameByRouteId(route); + reservationOrderPO.setRoute(routeName); } } @@ -1066,7 +1079,7 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { @Override public BusinessDocumentOrderPO confirmReservationOrder(String goodsNumber) { - // 1. 根据预约单号查询预约单信息 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ReservationOrder::getGoodsNumber, goodsNumber); ReservationOrder reservationOrder = resevationOrderMapper.selectOne(queryWrapper); @@ -1075,18 +1088,18 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { 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(); // 基本信息映射 @@ -1095,19 +1108,16 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { 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()); @@ -1123,8 +1133,6 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { businessDocumentOrderDO.setUnloadLatitude(reservationOrder.getUnloadLatitude()); businessDocumentOrderDO.setUnloadPhone(reservationOrder.getUnloadPhone()); businessDocumentOrderDO.setUnloadingData(reservationOrder.getUnloadingData()); - - // 其他信息映射 businessDocumentOrderDO.setFreighterName(reservationOrder.getFreighterName()); businessDocumentOrderDO.setDischargerName(reservationOrder.getDischargerName()); businessDocumentOrderDO.setRemarks(reservationOrder.getRemarks()); @@ -1139,29 +1147,27 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { 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 } @@ -1169,7 +1175,6 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { businessDocumentOrderDO.setInfoFeePayeeType(0L); // 默认设置为0 } - // 5. 直接创建业务单记录(不使用ApplicationService) BusinessDocumentOrder businessDocumentOrder = new BusinessDocumentOrder(); BeanUtils.copyProperties(businessDocumentOrderDO, businessDocumentOrder); businessDocumentOrder.setId(null); // 确保是新记录 @@ -1184,8 +1189,7 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { throw new ServiceException("创建业务单失败"); } - // 6. 处理货物和地址信息(借鉴BusinessDocumentOrderDomainService的方法) - // 先查询刚创建的业务单ID + LambdaQueryWrapper orderQueryWrapper = new LambdaQueryWrapper<>(); orderQueryWrapper.eq(BusinessDocumentOrder::getGoodsNumber, businessDocumentOrderDO.getGoodsNumber()); BusinessDocumentOrder createdOrder = businessDocumentOrderService.getOne(orderQueryWrapper); @@ -1199,7 +1203,7 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { // 处理地址信息(从预约单获取) handleAddressInfoFromReservation(createdOrder.getId(), reservationOrder.getId()); - // 7. 更新预约单状态 + // 更新预约单状态 reservationOrder.setOrderType(1); // 设置为业务单类型 reservationOrder.setBusinessOrderId(businessDocumentOrder.getId()); // 关联业务单ID reservationOrder.setBusinessOrderNumber(businessDocumentOrder.getGoodsNumber()); // 关联业务单号 @@ -1211,7 +1215,7 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { throw new ServiceException("更新预约单状态失败"); } - // 8. 转换并返回业务单PO + BusinessDocumentOrderPO businessDocumentOrderPO = new BusinessDocumentOrderPO(); BeanUtils.copyProperties(businessDocumentOrder, businessDocumentOrderPO); @@ -1239,8 +1243,9 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { tmsCargoInfo.setOrderId(id); tmsCargoInfo.setCargoWeight(tmsCargoInfoDTO.getWeight()==null ? BigDecimal.ZERO: tmsCargoInfoDTO.getWeight()); tmsCargoInfo.setCargoVolume(tmsCargoInfoDTO.getMaterialVolume()==null ? BigDecimal.ZERO: tmsCargoInfoDTO.getMaterialVolume()); - tmsCargoInfo.setCargoContent(tmsCargoInfoDTO.getMaterialContent()); + tmsCargoInfo.setCargoContent(tmsCargoInfoDTO.getCargoContent()); tmsCargoInfo.setCargoNum(tmsCargoInfoDTO.getCargoNum()==null ? BigDecimal.ZERO: tmsCargoInfoDTO.getCargoNum()); + tmsCargoInfo.setGoodsName(tmsCargoInfoDTO.getGoodsName()); tmsCargoInfo.setRemark(tmsCargoInfoDTO.getRemark()); tmsCargoInfoList.add(tmsCargoInfo); } @@ -1383,7 +1388,43 @@ public class OmsAddressMultiService implements IOmsAddressMultiService { return errorResult; } } - + + @Override + public Result batchRejectReservationOrder(List goodsNumbers) { + BatchConfirmResult result = new BatchConfirmResult(); + result.setTotal(goodsNumbers.size()); + result.setSuccessList(new ArrayList<>()); + result.setFailList(new ArrayList<>()); + + // 同步处理,避免线程池问题 + for (String goodsNumber : goodsNumbers) { + try { + ReservationOrder reservationOrder = resevationOrderMapper.selectOne(new LambdaQueryWrapper().eq(ReservationOrder::getGoodsNumber, goodsNumber)); + reservationOrder.setOrderType(2); + int i = resevationOrderMapper.updateById(reservationOrder); + 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; + } + + } + /** * 从预约单处理货物信息到业务单 */ diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsCargoInfoDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsCargoInfoDTO.java index a6306233a..0e561729b 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsCargoInfoDTO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsCargoInfoDTO.java @@ -63,7 +63,7 @@ public class OmsCargoInfoDTO implements Serializable { private BigDecimal materialVolume; @ApiModelProperty("内容") - private String materialContent; + private String cargoContent; @ApiModelProperty("是否为库存") private boolean stockFlag; diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsOrderAddDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsOrderAddDTO.java index 6c5ab5158..819e0fde1 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsOrderAddDTO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/resevationOrder/OmsOrderAddDTO.java @@ -470,6 +470,11 @@ public class OmsOrderAddDTO implements Serializable { @ApiModelProperty("业务员编码nc") private String salesmanCodeNc; + @ApiModelProperty("起运时间") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private java.util.Date departureTime; + @ApiModelProperty(value = "单据日期") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 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 b64614c4a..58dd7b06d 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 @@ -82,7 +82,7 @@ public class ResevationOrderApi extends BaseController{ } /** - * 分页查询【业务单】列表 + * 分页查询【预约单】列表 */ @ApiOperation("查询【预约单】列表") @GetMapping("/list") @@ -118,5 +118,26 @@ public class ResevationOrderApi extends BaseController{ return result; } + /** + * 批量驳回预约单 + */ + @ApiOperation("批量驳回预约单") + @PostMapping("/batchReject") + public Result batchReject(@RequestBody List goodsNumbers) { + Result result = new Result<>(); + try { + if (goodsNumbers == null || goodsNumbers.isEmpty()) { + result.error500("预约单号列表不能为空"); + return result; + } + return omsAddressMultiService.batchRejectReservationOrder(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/ReservationDocumentOrderMapper.xml b/mhd_oms/src/main/resources/mapper/reservationOrder/ReservationDocumentOrderMapper.xml index f58561cc8..9870e67fe 100644 --- a/mhd_oms/src/main/resources/mapper/reservationOrder/ReservationDocumentOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/reservationOrder/ReservationDocumentOrderMapper.xml @@ -7,6 +7,8 @@