0213oms
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
+2
@@ -36,4 +36,6 @@ public interface IOmsAddressMultiService {
|
||||
* @return 批量处理结果
|
||||
*/
|
||||
Result<?> batchConfirmReservationOrder(List<String> goodsNumbers);
|
||||
|
||||
Result<?> batchRejectReservationOrder(List<String> goodsNumbers);
|
||||
}
|
||||
|
||||
+27
@@ -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<ReservationCargoInfo> 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;
|
||||
}
|
||||
|
||||
+64
-23
@@ -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<ReservationOrderPO> reservationOrderPOS = reservationOrderDomainService.queryList(omsOrderDTO);
|
||||
for (ReservationOrderPO reservationOrderPO : reservationOrderPOS){
|
||||
List<ReservationCargoInfo> reservationCargoInfoList = reservationCargoInfoMapper.selectList(new LambdaQueryWrapper<ReservationCargoInfo>().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<ReservationOrder> 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<BusinessDocumentOrder> 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<String> 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<ReservationOrder>().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<Object> successResult = new Result<>();
|
||||
successResult.success("批量取消成功");
|
||||
successResult.setResult(result);
|
||||
return successResult;
|
||||
} else {
|
||||
// 如果有失败项,返回错误状态,包含成功和失败的信息
|
||||
Result<Object> errorResult = new Result<>();
|
||||
errorResult.error500("部分取消失败,成功: " + result.getSuccessCount() + ", 失败: " + result.getFailCount());
|
||||
errorResult.setResult(result);
|
||||
return errorResult;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 从预约单处理货物信息到业务单
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user