From 88305f65a7728f4df58caa72c7a70194cc026853 Mon Sep 17 00:00:00 2001 From: chenxiky <2868613334@qq.com> Date: Fri, 25 Jul 2025 21:34:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AE=8C=E6=88=90=E5=A4=9A=E7=AB=AF?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85=E5=BC=80=E5=8F=91=EF=BC=88?= =?UTF-8?q?=E5=BE=85=E4=BC=98=E5=8C=96=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aircraft/modules/order/biz/OrderBiz.java | 118 ++++++++++++++++-- .../order/controller/OrderMainController.java | 2 +- .../order/domain/enums/OrderTypeEnum.java | 48 +++++++ .../order/domain/vo/OrderAllDetailVO.java | 9 +- .../order/domain/vo/OrderTaskDetailVO.java | 14 ++- .../service/IAttachmentMaterialService.java | 15 ++- .../impl/AttachmentMaterialServiceImpl.java | 7 ++ 7 files changed, 193 insertions(+), 20 deletions(-) create mode 100644 aircraft-system/src/main/java/com/aircraft/modules/order/domain/enums/OrderTypeEnum.java diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java b/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java index ac32119..4c4f961 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/biz/OrderBiz.java @@ -5,7 +5,10 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.aircraft.domain.dto.AttachmentMaterialDTO; import com.aircraft.exception.BadRequestException; +import com.aircraft.modules.aircraft.domain.AircraftDevice; +import com.aircraft.modules.aircraft.service.AircraftDeviceService; import com.aircraft.modules.order.domain.*; import com.aircraft.modules.order.domain.constant.OrderConstant; import com.aircraft.modules.order.domain.constant.OrderRedisConstant; @@ -13,12 +16,10 @@ import com.aircraft.modules.order.domain.dto.AddOrderDTO; import com.aircraft.modules.order.domain.dto.AddOrderTaskDTO; import com.aircraft.modules.order.domain.dto.OrderMainPageQueryDTO; import com.aircraft.modules.order.domain.dto.UpdateOrderDTO; -import com.aircraft.modules.order.domain.enums.MainOrderStatusEnum; -import com.aircraft.modules.order.domain.enums.OrderSettlementStatusEnum; -import com.aircraft.modules.order.domain.enums.OrderTaskStatusEnum; -import com.aircraft.modules.order.domain.enums.SettlementStatusEnum; +import com.aircraft.modules.order.domain.enums.*; import com.aircraft.modules.order.domain.vo.OrderAllDetailVO; import com.aircraft.modules.order.domain.vo.OrderMainPageQueryVO; +import com.aircraft.modules.order.domain.vo.OrderTaskDetailVO; import com.aircraft.modules.order.service.*; import com.aircraft.modules.route.domain.CpRoute; import com.aircraft.modules.route.service.CpRouteService; @@ -27,6 +28,7 @@ import com.aircraft.modules.system.domain.EmEmployees; import com.aircraft.modules.system.domain.EmScenic; import com.aircraft.modules.system.domain.dto.LocalAttachmentMaterialDTO; import com.aircraft.modules.system.domain.enums.AttachmentMaterialBusinessTypeEnum; +import com.aircraft.modules.system.service.CnCustomerService; import com.aircraft.modules.system.service.EmEmployeesService; import com.aircraft.modules.system.service.EmScenicService; import com.aircraft.modules.system.service.IAttachmentMaterialService; @@ -45,10 +47,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -83,6 +82,10 @@ public class OrderBiz { private ISettlementMainService settlementMainService; @Resource private ISettlementDetailService settlementDetailService; + @Resource + private CnCustomerService cnCustomerService; + @Resource + private AircraftDeviceService aircraftDeviceService; public List queryAll(OrderMainPageQueryDTO pageQueryDTO) { @@ -330,7 +333,104 @@ public class OrderBiz { * 根据订单ID查询详情 */ public OrderAllDetailVO queryOrderDetail(Long id) { - return new OrderAllDetailVO(); + // 获取订单详情 + OrderMain orderMain = orderMainService.obtainOrderMainById(id); + Long orderInitiatorId = orderMain.getOrderInitiatorId(); + List emEmployeesList = emEmployeesService.list(); + Map emEmployeesMap = emEmployeesList.stream().collect( Collectors.toMap(EmEmployees::getId, v -> v)); + EmEmployees emEmployees = emEmployeesMap.get(orderInitiatorId); + String customerName = cnCustomerService.getById(orderMain.getCustomerId()).getName(); + + // 构建订单回显 + OrderAllDetailVO orderAllDetailVO = new OrderAllDetailVO(); + orderAllDetailVO.setOrderNo(orderMain.getOrderNo()); + orderAllDetailVO.setOrderType(OrderTypeEnum.getInstance(orderMain.getOrderType()).getDescription()); + orderAllDetailVO.setOrderInitiator(emEmployees.getName()); + orderAllDetailVO.setInitiatorPhone(emEmployees.getPhone()); + orderAllDetailVO.setCustomerName(customerName); + orderAllDetailVO.setPhone(orderMain.getPhone()); + orderAllDetailVO.setScenicName(emScenicService.obtainScenicById(orderMain.getAttractionId()).getName()); + + // 获取路线 + String routeIds = orderMain.getRouteIds(); + List cpRoutes = cpRouteService.obtainAllRoutes(); + Map 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); + + // 获取该订单下的操作人 + List orderOperatorList = orderOperatorService.queryAllByOrderIds(List.of(id)); + // 转成map + StringBuilder nameBuilder = new StringBuilder(); + for (OrderOperator operator : orderOperatorList) { + Long operatorId = operator.getOperatorId(); + String name = emEmployeesMap.get(operatorId).getName(); + nameBuilder.append(name).append(StrUtil.COMMA); + } + // 去掉最后一个逗号 + orderAllDetailVO.setOperatorName(nameBuilder.substring(0, nameBuilder.length() - 1)); + orderAllDetailVO.setOrderCreateTime(orderMain.getOrderCreateTime()); + orderAllDetailVO.setOrderFinishTime(orderMain.getOrderFinishTime()); + + // 根据订单id获取任务 + List orderDetailList = orderDetailService.queryOrderDetailByOrderId(id); + if (CollectionUtil.isEmpty(orderDetailList)) { + return orderAllDetailVO; + } + + // 获取任务ID集合 + List taskIdList = orderDetailList.stream().map(OrderDetail::getId).toList(); + //根据任务分别获取材料 + List businessCodeList = new ArrayList<>(); + businessCodeList.add(AttachmentMaterialBusinessTypeEnum.ORDER_TASK_MATERIAL.getCode()); + List attachmentMaterialList = attachmentMaterialService.obtainAttachmentMaterialByBusinessIdAndCode( + taskIdList, businessCodeList); + + // 根据 businessId 进行分组 + if (CollectionUtil.isEmpty(attachmentMaterialList)){ + return new OrderAllDetailVO(); + } + Map> attachmentMaterialMap = attachmentMaterialList.stream(). + collect(Collectors.groupingBy(AttachmentMaterial::getBusinessId)); + + // 获取所有设备 + List aircraftDeviceList = aircraftDeviceService.list(); + Map aircraftDeviceMap = aircraftDeviceList.stream(). + collect(Collectors.toMap(AircraftDevice::getId, device -> device)); + + List orderTaskDetailList = new ArrayList<>(); + for (OrderDetail orderDetail : orderDetailList) { + OrderTaskDetailVO orderTaskDetailVO = new OrderTaskDetailVO(); + orderTaskDetailVO.setId(orderDetail.getId()); + AircraftDevice aircraftDevice = aircraftDeviceMap.get(orderDetail.getDeviceId()); + if (ObjectUtil.isNotNull(aircraftDevice)) { + orderTaskDetailVO.setDeviceName(aircraftDevice.getName()); + } + orderTaskDetailVO.setCargoWeight(orderDetail.getCargoWeight()); + EmEmployees employees = emEmployeesMap.get(orderDetail.getOperatorId()); + if (ObjectUtil.isNotNull(employees)) { + orderTaskDetailVO.setOperatorName(employees.getName()); + } + OrderTaskStatusEnum orderTaskStatusEnum = OrderTaskStatusEnum.getInstance(orderDetail.getOrderItemStatus()); + orderTaskDetailVO.setOrderItemStatus(orderTaskStatusEnum.getDescription()); + // 获取对应的材料信息 + List materialList = attachmentMaterialMap.get(orderDetail.getId()); + if (CollectionUtil.isNotEmpty(materialList)) { + orderTaskDetailVO.setAttachmentMaterialList(BeanUtil.copyToList(materialList, AttachmentMaterialDTO.class)); + } + orderTaskDetailList.add(orderTaskDetailVO); + } + // 组织飞行任务 + orderAllDetailVO.setOrderTaskDetailList(orderTaskDetailList); + return orderAllDetailVO; } /** diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/controller/OrderMainController.java b/aircraft-system/src/main/java/com/aircraft/modules/order/controller/OrderMainController.java index cd40b7b..df80f4a 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/controller/OrderMainController.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/controller/OrderMainController.java @@ -96,7 +96,7 @@ public class OrderMainController { /** * 根据订单ID查询详情 */ - @ApiOperation("根据订单ID查询详情") + @ApiOperation("根据订单ID查询详情-多端查询") @GetMapping("/queryOrderDetail/{id}") public ResponseEntity queryOrderDetail(@PathVariable("id") Long id) { return ResponseEntity.ok(orderBiz.queryOrderDetail(id)); diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/enums/OrderTypeEnum.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/enums/OrderTypeEnum.java new file mode 100644 index 0000000..ede602e --- /dev/null +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/enums/OrderTypeEnum.java @@ -0,0 +1,48 @@ +package com.aircraft.modules.order.domain.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * 订单类型枚举类 + * + * @author chenxiky + * @version 1.0.0 + * @since 2025/7/25 + */ +@Getter +@AllArgsConstructor +public enum OrderTypeEnum { + /** + * 载物订单 + */ + ORDER_TYPE_CARGO(1, "载物订单"), + /** + * 载人订单 + */ + ORDER_TYPE_PERSON(2, "载人订单"); + + /** + * 订单类型 Code + */ + private final Integer code; + + /** + * 订单类型描述 + */ + private final String description; + + /** + * 根据code获取枚举 + * + * @param code 编码 + * @return {@link OrderTypeEnum} + */ + public static OrderTypeEnum getInstance(Integer code) { + return Arrays.stream(OrderTypeEnum.values()) + .filter(o -> o.getCode().equals(code)).findFirst().orElse(null); + } + +} diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderAllDetailVO.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderAllDetailVO.java index f0c9023..a86d2ad 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderAllDetailVO.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderAllDetailVO.java @@ -95,7 +95,14 @@ public class OrderAllDetailVO { */ @ApiModelProperty(value = "下单时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date orderTime; + private Date orderCreateTime; + + /** + * 订单完成时间 + */ + @ApiModelProperty(value = "订单完成时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date orderFinishTime; /** * 订单子单信息列表 diff --git a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderTaskDetailVO.java b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderTaskDetailVO.java index 2db93bb..2152c6a 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderTaskDetailVO.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/order/domain/vo/OrderTaskDetailVO.java @@ -1,9 +1,12 @@ package com.aircraft.modules.order.domain.vo; +import com.aircraft.domain.dto.AttachmentMaterialDTO; +import com.aircraft.modules.system.domain.dto.LocalAttachmentMaterialDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.util.List; /** * @@ -22,12 +25,6 @@ public class OrderTaskDetailVO { @ApiModelProperty(value = "ID") private Long id; - /** - * 图片Url - */ - @ApiModelProperty(value = "图片Url") - private String imageUrl; - /** * 设备名称 */ @@ -51,5 +48,10 @@ public class OrderTaskDetailVO { */ @ApiModelProperty(value = "任务状态") private String orderItemStatus; + /** + * 图片材料List + */ + @ApiModelProperty(value = "材料List集合") + private List attachmentMaterialList; } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/IAttachmentMaterialService.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/IAttachmentMaterialService.java index 4ae1862..a24175e 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/IAttachmentMaterialService.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/IAttachmentMaterialService.java @@ -25,8 +25,17 @@ public interface IAttachmentMaterialService extends IService /** * 根据业务ID删除材料 * - * @param orderId 业务ID - * @param code 业务编码 + * @param businessId 业务ID + * @param businessCode 业务编码 */ - void deleteAttachmentMaterialByBusinessId(Long orderId, String code); + void deleteAttachmentMaterialByBusinessId(Long businessId, String businessCode); + + /** + * 批量获取:根据业务ID和业务编码查询材料 + * + * @param businessIds 业务ID集合 + * @param businessCodes 业务codes集合 + * @return {@link List} + */ + List obtainAttachmentMaterialByBusinessIdAndCode(List businessIds, List businessCodes); } diff --git a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/AttachmentMaterialServiceImpl.java b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/AttachmentMaterialServiceImpl.java index 52c6554..89c0c6a 100644 --- a/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/AttachmentMaterialServiceImpl.java +++ b/aircraft-system/src/main/java/com/aircraft/modules/system/service/impl/AttachmentMaterialServiceImpl.java @@ -32,4 +32,11 @@ public class AttachmentMaterialServiceImpl extends ServiceImpl obtainAttachmentMaterialByBusinessIdAndCode(List businessIds, List businessCodes) { + return this.list(Wrappers.lambdaQuery() + .in(AttachmentMaterial::getBusinessId, businessIds) + .in(AttachmentMaterial::getBusinessType, businessCodes)); + } }