|
|
@@ -2,6 +2,7 @@ package com.yc.ship.module.trade.service.orderjzdetail;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.yc.ship.framework.common.pojo.PageResult;
|
|
|
import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDispatchBatchReqVO;
|
|
|
@@ -73,33 +74,63 @@ public class OrderJzDispatchServiceImpl implements OrderJzDispatchService {
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void batchSaveOrderJzDispatch(@Valid OrderJzDispatchBatchReqVO batchReqVO) {
|
|
|
OrderJzDispatchBatchReqVO.DispatchInfo info = batchReqVO.getDispatchInfo();
|
|
|
- // 无分车记录 -> 新建
|
|
|
- OrderJzDispatchDO orderJzDispatch = OrderJzDispatchDO.builder()
|
|
|
- .dispatchTime(LocalDateTime.now())
|
|
|
- .voyageId(info.getVoyageId())
|
|
|
- .dispatchNo(info.getDispatchNo())
|
|
|
- .groupNo(info.getGroupNo())
|
|
|
- .busNumber(info.getBusNumber())
|
|
|
- .driverName(info.getDriverName())
|
|
|
- .driverPhone(info.getDriverPhone())
|
|
|
- .receiverName(info.getReceiverName())
|
|
|
- .receiverPhone(info.getReceiverPhone())
|
|
|
- .sourceType(ObjectUtil.isEmpty(info.getSourceType()) ? 1 : info.getSourceType())
|
|
|
- .passengerCount(info.getPassengerCount())
|
|
|
- .remark(info.getRemark())
|
|
|
- .build();
|
|
|
- orderJzDispatchMapper.insert(orderJzDispatch);
|
|
|
- for (OrderJzDispatchBatchReqVO.OrderItem item : batchReqVO.getOrderItems()) {
|
|
|
- // 更新接站人员信息的分车ID
|
|
|
- OrderJzDetailDO detail = orderJzDetailMapper.selectById(item.getId());
|
|
|
- if (detail != null) {
|
|
|
- detail.setDispatchId(orderJzDispatch.getId());
|
|
|
- orderJzDetailMapper.updateById(detail);
|
|
|
- }
|
|
|
- }
|
|
|
+ String dispatchNo = info.getDispatchNo();
|
|
|
+ String groupNo = info.getGroupNo();
|
|
|
+ Long voyageId = info.getVoyageId();
|
|
|
|
|
|
+ // 根据条件查找已有的分车记录:分车号+分车组团号+航次ID,或分车号+航次ID
|
|
|
+ LambdaQueryWrapper<OrderJzDispatchDO> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(OrderJzDispatchDO::getDispatchNo, dispatchNo)
|
|
|
+ .eq(OrderJzDispatchDO::getVoyageId, voyageId);
|
|
|
+ if (StrUtil.isNotBlank(groupNo)) {
|
|
|
+ queryWrapper.eq(OrderJzDispatchDO::getGroupNo, groupNo);
|
|
|
+ }
|
|
|
+ List<OrderJzDispatchDO> existingList = orderJzDispatchMapper.selectList(queryWrapper);
|
|
|
|
|
|
+ Long dispatchId;
|
|
|
+ if (existingList != null && !existingList.isEmpty()) {
|
|
|
+ // 已存在分车记录,更新并复用
|
|
|
+ OrderJzDispatchDO existing = existingList.get(0);
|
|
|
+ /* OrderJzDispatchDO updateObj = OrderJzDispatchDO.builder()
|
|
|
+ .id(existing.getId())
|
|
|
+ .busNumber(info.getBusNumber())
|
|
|
+ .driverName(info.getDriverName())
|
|
|
+ .driverPhone(info.getDriverPhone())
|
|
|
+ .receiverName(info.getReceiverName())
|
|
|
+ .receiverPhone(info.getReceiverPhone())
|
|
|
+ .passengerCount(existing.getPassengerCount() + batchReqVO.getOrderItems().size())
|
|
|
+ .remark(info.getRemark())
|
|
|
+ .build();
|
|
|
+ orderJzDispatchMapper.updateById(updateObj);*/
|
|
|
+ dispatchId = existing.getId();
|
|
|
+ } else {
|
|
|
+ // 不存在,新建分车记录
|
|
|
+ OrderJzDispatchDO orderJzDispatch = OrderJzDispatchDO.builder()
|
|
|
+ .dispatchTime(LocalDateTime.now())
|
|
|
+ .voyageId(voyageId)
|
|
|
+ .dispatchNo(dispatchNo)
|
|
|
+ .groupNo(groupNo)
|
|
|
+ .busNumber(info.getBusNumber())
|
|
|
+ .driverName(info.getDriverName())
|
|
|
+ .driverPhone(info.getDriverPhone())
|
|
|
+ .receiverName(info.getReceiverName())
|
|
|
+ .receiverPhone(info.getReceiverPhone())
|
|
|
+ .sourceType(ObjectUtil.isEmpty(info.getSourceType()) ? 1 : info.getSourceType())
|
|
|
+ .passengerCount(batchReqVO.getOrderItems().size())
|
|
|
+ .remark(info.getRemark())
|
|
|
+ .build();
|
|
|
+ orderJzDispatchMapper.insert(orderJzDispatch);
|
|
|
+ dispatchId = orderJzDispatch.getId();
|
|
|
+ }
|
|
|
|
|
|
+ // 更新接站人员的分车ID
|
|
|
+ for (OrderJzDispatchBatchReqVO.OrderItem item : batchReqVO.getOrderItems()) {
|
|
|
+ OrderJzDetailDO detail = orderJzDetailMapper.selectById(item.getId());
|
|
|
+ if (detail != null) {
|
|
|
+ detail.setDispatchId(dispatchId);
|
|
|
+ orderJzDetailMapper.updateById(detail);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -192,16 +223,17 @@ public class OrderJzDispatchServiceImpl implements OrderJzDispatchService {
|
|
|
// 构建更新条件
|
|
|
LambdaUpdateWrapper<OrderJzDispatchDO> updateWrapper = new LambdaUpdateWrapper<>();
|
|
|
|
|
|
- // 如果有分车组团号,通过分车号、分车组团号、id三个条件更新
|
|
|
- if (StrUtil.isNotBlank(updateReqVO.getGroupNo())) {
|
|
|
+ // 如果有分车组团号,通过分车号、分车组团号、航次、id条件更新
|
|
|
+ // if (StrUtil.isNotBlank(updateReqVO.getGroupNo())) {
|
|
|
updateWrapper.eq(OrderJzDispatchDO::getDispatchNo, updateReqVO.getDispatchNo())
|
|
|
.eq(OrderJzDispatchDO::getGroupNo, updateReqVO.getGroupNo())
|
|
|
- .eq(OrderJzDispatchDO::getId, updateReqVO.getId());
|
|
|
- } else {
|
|
|
+ .eq(OrderJzDispatchDO::getVoyageId, updateReqVO.getVoyageId());
|
|
|
+ /*.eq(OrderJzDispatchDO::getId, updateReqVO.getId());*/
|
|
|
+ //} else {
|
|
|
// 如果没有分车组团号,通过分车号、id两个条件更新
|
|
|
- updateWrapper.eq(OrderJzDispatchDO::getDispatchNo, updateReqVO.getDispatchNo())
|
|
|
- .eq(OrderJzDispatchDO::getId, updateReqVO.getId());
|
|
|
- }
|
|
|
+ // updateWrapper.eq(OrderJzDispatchDO::getDispatchNo, updateReqVO.getDispatchNo())
|
|
|
+ // .eq(OrderJzDispatchDO::getId, updateReqVO.getId());
|
|
|
+ // }
|
|
|
|
|
|
// 构建更新对象
|
|
|
OrderJzDispatchDO updateObj = OrderJzDispatchDO.builder()
|
|
|
@@ -217,5 +249,41 @@ public class OrderJzDispatchServiceImpl implements OrderJzDispatchService {
|
|
|
orderJzDispatchMapper.update(updateObj, updateWrapper);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public String checkDispatchDuplicate(OrderJzDispatchBatchReqVO.DispatchInfo dispatchInfo) {
|
|
|
+ String dispatchNo = dispatchInfo.getDispatchNo();
|
|
|
+ String groupNo = dispatchInfo.getGroupNo();
|
|
|
+ Long voyageId = dispatchInfo.getVoyageId();
|
|
|
+
|
|
|
+ if (StrUtil.isBlank(dispatchNo)) {
|
|
|
+ return "分车号不能为空";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StrUtil.isBlank(groupNo)) {
|
|
|
+ return "分车组团号不能为空";
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /* // 根据条件查找已有的分车记录
|
|
|
+ LambdaQueryWrapper<OrderJzDispatchDO> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(OrderJzDispatchDO::getDispatchNo, dispatchNo)
|
|
|
+ .eq(OrderJzDispatchDO::getVoyageId, voyageId);
|
|
|
+ if (StrUtil.isNotBlank(groupNo)) {
|
|
|
+ queryWrapper.eq(OrderJzDispatchDO::getGroupNo, groupNo);
|
|
|
+ }
|
|
|
+ List<OrderJzDispatchDO> existingList = orderJzDispatchMapper.selectList(queryWrapper);
|
|
|
+
|
|
|
+ if (existingList == null || existingList.isEmpty()) {
|
|
|
+ return null; // 无重复
|
|
|
+ }
|
|
|
+
|
|
|
+ String condition = StrUtil.isNotBlank(groupNo)
|
|
|
+ ? "分车号「" + dispatchNo + "」+分车组团号「" + groupNo + "」"
|
|
|
+ : "分车号「" + dispatchNo + "」";
|
|
|
+ return "该" + condition + "已存在分车组团号记录";*/
|
|
|
+ return null; // 无重复
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|