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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 从预约单处理货物信息到业务单
|
||||
*/
|
||||
|
||||
+1
-1
@@ -63,7 +63,7 @@ public class OmsCargoInfoDTO implements Serializable {
|
||||
private BigDecimal materialVolume;
|
||||
|
||||
@ApiModelProperty("内容")
|
||||
private String materialContent;
|
||||
private String cargoContent;
|
||||
|
||||
@ApiModelProperty("是否为库存")
|
||||
private boolean stockFlag;
|
||||
|
||||
@@ -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")
|
||||
|
||||
+22
-1
@@ -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<String> 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
<select id="queryList" resultType="com.mhd.oms.domain.reservationOrder.repository.po.ReservationOrderPO">
|
||||
select * from reservation_order
|
||||
<include refid="findAll"></include>
|
||||
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<sql id="findAll">
|
||||
|
||||
Reference in New Issue
Block a user