perf: 优化订单飞行任务;完善订单详情列表;修复获取当前用户的空指针异常

This commit is contained in:
chenxiky 2025-07-26 10:31:48 +08:00
parent 88305f65a7
commit 285b351e2e
5 changed files with 56 additions and 36 deletions

View File

@ -40,6 +40,7 @@ import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -212,9 +213,7 @@ public class OrderBiz {
public void addOrder(AddOrderDTO addOrderDTO) { public void addOrder(AddOrderDTO addOrderDTO) {
// 获取当前登录用户飞行端用户 // 获取当前登录用户飞行端用户
EmEmployees employees = JSON.parseObject(SecurityUtils.getCurrentEmployee(), EmEmployees.class); Long orderInitiatorId = SecurityUtils.getCurrentUserId();
// 发起人ID
Long orderInitiatorId = employees.getId();
// 新增订单 // 新增订单
OrderMain orderMain = orderMainService.addOrder(buildOrderParam(addOrderDTO, orderInitiatorId)); OrderMain orderMain = orderMainService.addOrder(buildOrderParam(addOrderDTO, orderInitiatorId));
// 构建保存操作人信息 // 构建保存操作人信息
@ -268,8 +267,7 @@ public class OrderBiz {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void addOrderTask(AddOrderTaskDTO orderTaskDTO) { public void addOrderTask(AddOrderTaskDTO orderTaskDTO) {
// 获取当前登录用户 // 获取当前登录用户
EmEmployees employees = JSON.parseObject(SecurityUtils.getCurrentEmployee(), EmEmployees.class); Long orderInitiatorId = SecurityUtils.getCurrentUserId();
Long orderInitiatorId = employees.getId();
// 新建订单飞行任务限制当前飞行员不能存在任务处于未进行进行中 // 新建订单飞行任务限制当前飞行员不能存在任务处于未进行进行中
Long orderId = orderTaskDTO.getOrderId(); Long orderId = orderTaskDTO.getOrderId();
@ -277,15 +275,15 @@ public class OrderBiz {
// 构建任务参数 // 构建任务参数
OrderDetail orderTask = buildOrderTaskParam(orderTaskDTO, orderInitiatorId); OrderDetail orderTask = buildOrderTaskParam(orderTaskDTO, orderInitiatorId);
// 批量新增 // 新增订单飞行任务
orderDetailService.addOrderDetail(orderTask); OrderDetail orderDetail = orderDetailService.addOrderDetail(orderTask);
// 判断是否存在材料 // 判断是否存在材料
if (CollectionUtil.isEmpty(orderTaskDTO.getAttachmentMaterialList())) { if (CollectionUtil.isEmpty(orderTaskDTO.getAttachmentMaterialList())) {
return; return;
} }
// 保存材料 // 保存材料
List<AttachmentMaterial> attachmentMaterialList = buildAttachmentMaterialParam(orderTaskDTO); List<AttachmentMaterial> attachmentMaterialList = buildAttachmentMaterialParam(orderTaskDTO, orderDetail.getId());
attachmentMaterialService.batchAddAttachmentMaterial(attachmentMaterialList); attachmentMaterialService.batchAddAttachmentMaterial(attachmentMaterialList);
} }
@ -311,13 +309,14 @@ public class OrderBiz {
* 构建保存材料参数 * 构建保存材料参数
* *
* @param orderTaskDTO {@link AddOrderTaskDTO} * @param orderTaskDTO {@link AddOrderTaskDTO}
* @param orderDetailId 订单详情ID
* @return {@link AttachmentMaterial} * @return {@link AttachmentMaterial}
*/ */
private List<AttachmentMaterial> buildAttachmentMaterialParam(AddOrderTaskDTO orderTaskDTO) { private List<AttachmentMaterial> buildAttachmentMaterialParam(AddOrderTaskDTO orderTaskDTO, Long orderDetailId) {
List<AttachmentMaterial> materialList = new ArrayList<>(); List<AttachmentMaterial> materialList = new ArrayList<>();
for (LocalAttachmentMaterialDTO materialDTO : orderTaskDTO.getAttachmentMaterialList()) { for (LocalAttachmentMaterialDTO materialDTO : orderTaskDTO.getAttachmentMaterialList()) {
AttachmentMaterial attachmentMaterial = new AttachmentMaterial(); AttachmentMaterial attachmentMaterial = new AttachmentMaterial();
attachmentMaterial.setBusinessId(orderTaskDTO.getOrderId()); attachmentMaterial.setBusinessId(orderDetailId);
attachmentMaterial.setBusinessType(AttachmentMaterialBusinessTypeEnum.ORDER_TASK_MATERIAL.getCode()); attachmentMaterial.setBusinessType(AttachmentMaterialBusinessTypeEnum.ORDER_TASK_MATERIAL.getCode());
attachmentMaterial.setFileType(materialDTO.getFileType()); attachmentMaterial.setFileType(materialDTO.getFileType());
attachmentMaterial.setSourceFileName(materialDTO.getSourceFileName()); attachmentMaterial.setSourceFileName(materialDTO.getSourceFileName());
@ -335,6 +334,7 @@ public class OrderBiz {
public OrderAllDetailVO queryOrderDetail(Long id) { public OrderAllDetailVO queryOrderDetail(Long id) {
// 获取订单详情 // 获取订单详情
OrderMain orderMain = orderMainService.obtainOrderMainById(id); OrderMain orderMain = orderMainService.obtainOrderMainById(id);
Long orderInitiatorId = orderMain.getOrderInitiatorId(); Long orderInitiatorId = orderMain.getOrderInitiatorId();
List<EmEmployees> emEmployeesList = emEmployeesService.list(); List<EmEmployees> emEmployeesList = emEmployeesService.list();
Map<Long, EmEmployees> emEmployeesMap = emEmployeesList.stream().collect( Collectors.toMap(EmEmployees::getId, v -> v)); Map<Long, EmEmployees> emEmployeesMap = emEmployeesList.stream().collect( Collectors.toMap(EmEmployees::getId, v -> v));
@ -343,29 +343,20 @@ public class OrderBiz {
// 构建订单回显 // 构建订单回显
OrderAllDetailVO orderAllDetailVO = new OrderAllDetailVO(); OrderAllDetailVO orderAllDetailVO = new OrderAllDetailVO();
orderAllDetailVO.setId(orderMain.getId());
orderAllDetailVO.setOrderNo(orderMain.getOrderNo()); orderAllDetailVO.setOrderNo(orderMain.getOrderNo());
orderAllDetailVO.setOrderType(OrderTypeEnum.getInstance(orderMain.getOrderType()).getDescription()); orderAllDetailVO.setOrderType(OrderTypeEnum.getInstance(orderMain.getOrderType()).getDescription());
orderAllDetailVO.setOrderInitiator(emEmployees.getName()); orderAllDetailVO.setOrderInitiator(emEmployees.getName());
orderAllDetailVO.setInitiatorPhone(emEmployees.getPhone()); orderAllDetailVO.setInitiatorPhone(emEmployees.getPhone());
orderAllDetailVO.setCustomerName(customerName); orderAllDetailVO.setCustomerName(customerName);
orderAllDetailVO.setPhone(orderMain.getPhone()); orderAllDetailVO.setPhone(orderMain.getPhone());
orderAllDetailVO.setCargoWeight(orderMain.getCargoWeight());
orderAllDetailVO.setSurchargeAmount(orderMain.getSurchargeAmount());
orderAllDetailVO.setAmount(orderMain.getAmount());
orderAllDetailVO.setScenicName(emScenicService.obtainScenicById(orderMain.getAttractionId()).getName()); orderAllDetailVO.setScenicName(emScenicService.obtainScenicById(orderMain.getAttractionId()).getName());
// 获取路线 // 获取路线
String routeIds = orderMain.getRouteIds(); String routeName = obtainRouteName(orderMain);
List<CpRoute> cpRoutes = cpRouteService.obtainAllRoutes();
Map<Long, CpRoute> routeMap = cpRoutes.stream().collect(Collectors.toMap(CpRoute::getId, route -> route));
String[] routeIdArray = routeIds.split(StrUtil.COMMA);
StringBuilder routeNameBuilder = new StringBuilder();
for (String routeIdStr : routeIdArray) {
CpRoute cpRoute = routeMap.get(Long.valueOf(routeIdStr));
String name = cpRoute.getName();
routeNameBuilder.append(name).append(StrUtil.COMMA);
}
// 去掉最后一个逗号
String routeName = routeNameBuilder.substring(0, routeNameBuilder.length() - 1);
orderAllDetailVO.setRouteName(routeName); orderAllDetailVO.setRouteName(routeName);
// 获取该订单下的操作人 // 获取该订单下的操作人
List<OrderOperator> orderOperatorList = orderOperatorService.queryAllByOrderIds(List.of(id)); List<OrderOperator> orderOperatorList = orderOperatorService.queryAllByOrderIds(List.of(id));
// 转成map // 转成map
@ -433,6 +424,27 @@ public class OrderBiz {
return orderAllDetailVO; return orderAllDetailVO;
} }
/**
* 获取路线名称
*
* @param orderMain {@link OrderMain}
* @return 拼接的路线名称
*/
private String obtainRouteName(OrderMain orderMain) {
String routeIds = orderMain.getRouteIds();
List<CpRoute> cpRoutes = cpRouteService.obtainAllRoutes();
Map<Long, CpRoute> routeMap = cpRoutes.stream().collect(Collectors.toMap(CpRoute::getId, route -> route));
String[] routeIdArray = routeIds.split(StrUtil.COMMA);
StringBuilder routeNameBuilder = new StringBuilder();
for (String routeIdStr : routeIdArray) {
CpRoute cpRoute = routeMap.get(Long.valueOf(routeIdStr));
String name = cpRoute.getName();
routeNameBuilder.append(name).append(StrUtil.COMMA);
}
// 去掉最后一个逗号
return routeNameBuilder.substring(0, routeNameBuilder.length() - 1);
}
/** /**
* 修改订单 * 修改订单
*/ */
@ -449,8 +461,7 @@ public class OrderBiz {
throw new BadRequestException("当前订单状态不是未进行中,不允许修改"); throw new BadRequestException("当前订单状态不是未进行中,不允许修改");
} }
// 判断当前登录人是否为订单发起人不是则不允许修改 // 判断当前登录人是否为订单发起人不是则不允许修改
EmEmployees employees = JSON.parseObject(SecurityUtils.getCurrentEmployee(), EmEmployees.class); Long currentId = SecurityUtils.getCurrentUserId();
Long currentId = employees.getId();
if (!currentId.equals(orderMain.getOrderInitiatorId())) { if (!currentId.equals(orderMain.getOrderInitiatorId())) {
throw new BadRequestException("当前登录用户不是订单发起人,不允许修改"); throw new BadRequestException("当前登录用户不是订单发起人,不允许修改");
} }
@ -484,8 +495,7 @@ public class OrderBiz {
throw new BadRequestException("当前订单状态不是处于未进行中,不允许删除"); throw new BadRequestException("当前订单状态不是处于未进行中,不允许删除");
} }
// 判断当前登录人是否为订单发起人不是则不允许修改 // 判断当前登录人是否为订单发起人不是则不允许修改
EmEmployees employees = JSON.parseObject(SecurityUtils.getCurrentEmployee(), EmEmployees.class); Long currentId = SecurityUtils.getCurrentUserId();
Long currentId = employees.getId();
if (!currentId.equals(orderMain.getOrderInitiatorId())) { if (!currentId.equals(orderMain.getOrderInitiatorId())) {
throw new BadRequestException("当前登录用户不是订单发起人,不允许删除订单"); throw new BadRequestException("当前登录用户不是订单发起人,不允许删除订单");
} }
@ -532,8 +542,7 @@ public class OrderBiz {
throw new BadRequestException("订单任务不存在"); throw new BadRequestException("订单任务不存在");
} }
// 判断当前用户是否是订单发起者 // 判断当前用户是否是订单发起者
EmEmployees employees = JSON.parseObject(SecurityUtils.getCurrentEmployee(), EmEmployees.class); Long currentOperatorId = SecurityUtils.getCurrentUserId();
Long currentOperatorId = employees.getId();
if (!currentOperatorId.equals(orderDetail.getOperatorId())) { if (!currentOperatorId.equals(orderDetail.getOperatorId())) {
throw new BadRequestException("您没有权限更改此飞行任务状态"); throw new BadRequestException("您没有权限更改此飞行任务状态");
} }
@ -570,8 +579,7 @@ public class OrderBiz {
if (ObjectUtil.isNull(orderDetail)) { if (ObjectUtil.isNull(orderDetail)) {
throw new BadRequestException("订单飞行任务不存在"); throw new BadRequestException("订单飞行任务不存在");
} }
EmEmployees employees = JSON.parseObject(SecurityUtils.getCurrentEmployee(), EmEmployees.class); Long orderInitiatorId = SecurityUtils.getCurrentUserId();
Long orderInitiatorId = employees.getId();
// 判断当前用户是否是订单发起者 // 判断当前用户是否是订单发起者
if (!orderInitiatorId.equals(orderDetail.getOperatorId())) { if (!orderInitiatorId.equals(orderDetail.getOperatorId())) {
throw new BadRequestException("您没有权限删除此订单任务"); throw new BadRequestException("您没有权限删除此订单任务");

View File

@ -82,7 +82,13 @@ public class OrderAllDetailVO {
* 附加费 * 附加费
*/ */
@ApiModelProperty(value = "附加费") @ApiModelProperty(value = "附加费")
private BigDecimal additionalFee; private BigDecimal surchargeAmount;
/**
* 订单金额
*/
@ApiModelProperty(value = "订单金额")
private BigDecimal amount;
/** /**
* 操作员多个逗号拼接返回 * 操作员多个逗号拼接返回

View File

@ -95,6 +95,11 @@ public class OrderMainPageQueryVO {
@ApiModelProperty(value = "结算状态: 0=未结算, 1=已结算") @ApiModelProperty(value = "结算状态: 0=未结算, 1=已结算")
private Integer settlementStatus; private Integer settlementStatus;
/**
* 附加费surcharge_amount
*/
@ApiModelProperty(value = "附加费")
private BigDecimal surchargeAmount;
/** /**
* 订单金额 * 订单金额
*/ */

View File

@ -20,7 +20,7 @@ public interface IOrderDetailService extends IService<OrderDetail> {
* *
* @param orderTask {@link OrderDetail}订单任务 * @param orderTask {@link OrderDetail}订单任务
*/ */
void addOrderDetail(OrderDetail orderTask); OrderDetail addOrderDetail(OrderDetail orderTask);
/** /**
* 获取订单详情 * 获取订单详情

View File

@ -25,8 +25,9 @@ import java.util.List;
public class OrderDetailServiceImpl extends ServiceImpl<OrderDetailMapper, OrderDetail> implements IOrderDetailService { public class OrderDetailServiceImpl extends ServiceImpl<OrderDetailMapper, OrderDetail> implements IOrderDetailService {
@Override @Override
public void addOrderDetail(OrderDetail orderTask) { public OrderDetail addOrderDetail(OrderDetail orderTask) {
this.save(orderTask); this.save(orderTask);
return orderTask;
} }
@Override @Override