Commit ecb916dc by 杨浩

订单进度查询

parent 71b29808
...@@ -16,7 +16,7 @@ import java.util.Arrays; ...@@ -16,7 +16,7 @@ import java.util.Arrays;
public enum CustomerOrderStatus implements ArrayValuable<String> { public enum CustomerOrderStatus implements ArrayValuable<String> {
// 下单成功 // 下单成功
ORDER_SUCCESS("下单成功", "ORDER_SUCCESS") { ORDER_SUCCESS("下单成功", "ORDER_SUCCESS", 0) {
@Override @Override
public String getText() { public String getText() {
return "您已成功下单\n" + return "您已成功下单\n" +
...@@ -24,63 +24,63 @@ public enum CustomerOrderStatus implements ArrayValuable<String> { ...@@ -24,63 +24,63 @@ public enum CustomerOrderStatus implements ArrayValuable<String> {
} }
}, },
// 订单匹配 // 订单匹配
ORDER_MATCH("订单匹配", "ORDER_MATCH") { ORDER_MATCH("订单匹配", "ORDER_MATCH", 1) {
@Override @Override
public String getText() { public String getText() {
return "【%s】供应商 匹配成功"; return "【%s】供应商 匹配成功";
} }
}, },
// 供应商接单 // 供应商接单
SUPPLIER_ACCEPT_ORDER("供应商接单", "SUPPLIER_ACCEPT_ORDER") { SUPPLIER_ACCEPT_ORDER("供应商接单", "SUPPLIER_ACCEPT_ORDER", 2) {
@Override @Override
public String getText() { public String getText() {
return "【%s】供应商 已接单"; return "【%s】供应商 已接单";
} }
}, },
// 供应商发货 // 供应商发货
SUPPLIER_SHIP("供应商发货", "SUPPLIER_SHIP") { SUPPLIER_SHIP("供应商发货", "SUPPLIER_SHIP", 3) {
@Override @Override
public String getText() { public String getText() {
return "【%s】供应商 已发货"; return "【%s】供应商 已发货";
} }
}, },
// 供应商到货 // 供应商到货
SUPPLIER_ARRIVE("供应商到货", "SUPPLIER_ARRIVE") { SUPPLIER_ARRIVE("供应商到货", "SUPPLIER_ARRIVE", 4) {
@Override @Override
public String getText() { public String getText() {
return "【%s】供应商 已到货"; return "【%s】供应商 已到货";
} }
}, },
// 分仓质检 // 分仓质检
WAREHOUSE_INSPECTION("分仓质检", "WAREHOUSE_INSPECTION") { WAREHOUSE_INSPECTION("分仓质检", "WAREHOUSE_INSPECTION", 5) {
@Override @Override
public String getText() { public String getText() {
return "您的商品已到达【%s】分仓,已完成质检入库;查看质检报告【%s】"; return "您的商品已到达【%s】分仓,已完成质检入库;查看质检报告【%s】";
} }
}, },
// 商品分拣 // 商品分拣
SORTING("商品分拣", "SORTING") { SORTING("商品分拣", "SORTING", 6) {
@Override @Override
public String getText() { public String getText() {
return "您的商品在【%s】分仓已完成分拣,【%s】正在进行配送"; return "您的商品在【%s】分仓已完成分拣,【%s】正在进行配送";
} }
}, },
// 商品配送 // 商品配送
DELIVERY("商品配送", "DELIVERY") { DELIVERY("商品配送", "DELIVERY", 7) {
@Override @Override
public String getText() { public String getText() {
return "您的商品将在16小时内完成配送,请保持电话畅通,配送员【%s】联系方式:【%s】"; return "您的商品将在16小时内完成配送,请保持电话畅通,配送员【%s】联系方式:【%s】";
} }
}, },
// 商品到货 // 商品到货
ARRIVAL("商品到货", "ARRIVAL") { ARRIVAL("商品到货", "ARRIVAL", 8) {
@Override @Override
public String getText() { public String getText() {
return "您的商品已送到收货地址,请前往签收;配送员【%s】 联系方式:【%s】"; return "您的商品已送到收货地址,请前往签收;配送员【%s】 联系方式:【%s】";
} }
}, },
// 商品签收 // 商品签收
SIGN_RECEIPT("商品签收", "SIGN_RECEIPT") { SIGN_RECEIPT("商品签收", "SIGN_RECEIPT", 9) {
@Override @Override
public String getText() { public String getText() {
return "您的商品完成签收查看签收单【%s】"; return "您的商品完成签收查看签收单【%s】";
...@@ -88,7 +88,7 @@ public enum CustomerOrderStatus implements ArrayValuable<String> { ...@@ -88,7 +88,7 @@ public enum CustomerOrderStatus implements ArrayValuable<String> {
}, },
CANCEL("取消订单", "CANCEL") { CANCEL("取消订单", "CANCEL", 9999) {
@Override @Override
public String getText() { public String getText() {
return ""; return "";
...@@ -99,6 +99,7 @@ public enum CustomerOrderStatus implements ArrayValuable<String> { ...@@ -99,6 +99,7 @@ public enum CustomerOrderStatus implements ArrayValuable<String> {
private final String label; private final String label;
private final String key; private final String key;
private final int sort;
public static final String[] ARRAYS = Arrays.stream(values()).map(CustomerOrderStatus::getKey).toArray(String[]::new); public static final String[] ARRAYS = Arrays.stream(values()).map(CustomerOrderStatus::getKey).toArray(String[]::new);
......
...@@ -3,6 +3,7 @@ package cn.iocoder.foodnexus.module.order.controller.admin.customerorder; ...@@ -3,6 +3,7 @@ package cn.iocoder.foodnexus.module.order.controller.admin.customerorder;
import cn.iocoder.foodnexus.module.order.api.CustomerOrderApi; import cn.iocoder.foodnexus.module.order.api.CustomerOrderApi;
import cn.iocoder.foodnexus.module.order.controller.admin.customerorderitem.vo.CustomerOrderItemRespVO; import cn.iocoder.foodnexus.module.order.controller.admin.customerorderitem.vo.CustomerOrderItemRespVO;
import cn.iocoder.foodnexus.module.order.service.customerorderitem.CustomerOrderItemService; import cn.iocoder.foodnexus.module.order.service.customerorderitem.CustomerOrderItemService;
import cn.iocoder.foodnexus.module.order.service.customerorderrecord.CustomerOrderRecordService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
...@@ -45,6 +46,9 @@ public class CustomerOrderController { ...@@ -45,6 +46,9 @@ public class CustomerOrderController {
@Autowired @Autowired
private CustomerOrderApi customerOrderApi; private CustomerOrderApi customerOrderApi;
@Autowired
private CustomerOrderRecordService customerOrderRecordService;
/* @DeleteMapping("/delete") /* @DeleteMapping("/delete")
@Operation(summary = "删除客户总订单") @Operation(summary = "删除客户总订单")
...@@ -83,6 +87,13 @@ public class CustomerOrderController { ...@@ -83,6 +87,13 @@ public class CustomerOrderController {
return success(BeanUtils.toBean(pageResult, CustomerOrderRespVO.class)); return success(BeanUtils.toBean(pageResult, CustomerOrderRespVO.class));
} }
@GetMapping("/record")
@Operation(summary = "订单进度")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<List<CustomerOrderRecordMapVO>> queryRecord(@RequestParam("id") Long id) {
return success(customerOrderRecordService.queryRecordMap(id));
}
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出客户总订单 Excel") @Operation(summary = "导出客户总订单 Excel")
@PreAuthorize("@ss.hasPermission('order:customer-order:export')") @PreAuthorize("@ss.hasPermission('order:customer-order:export')")
......
package cn.iocoder.foodnexus.module.order.controller.admin.customerorder.vo;
import cn.iocoder.foodnexus.module.order.controller.admin.customerorderrecord.vo.CustomerOrderRecordRespVO;
import cn.iocoder.foodnexus.module.order.enums.CustomerOrderStatus;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.List;
/**
* @author : yanghao
* create at: 2025/9/26 14:23
* @description: 订单进度
*/
@Data
@AllArgsConstructor
public class CustomerOrderRecordMapVO {
@Schema(description = "订单状态")
private CustomerOrderStatus orderStatus;
@Schema(description = "进度记录")
private List<CustomerOrderRecordRespVO> records;
}
...@@ -9,6 +9,7 @@ import cn.iocoder.foodnexus.framework.common.util.CommonUtil; ...@@ -9,6 +9,7 @@ import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.framework.common.util.object.BeanUtils; import cn.iocoder.foodnexus.framework.common.util.object.BeanUtils;
import cn.iocoder.foodnexus.framework.excel.core.util.ExcelUtils; import cn.iocoder.foodnexus.framework.excel.core.util.ExcelUtils;
import cn.iocoder.foodnexus.module.order.controller.admin.customerorder.vo.CustomerOrderPageReqVO; import cn.iocoder.foodnexus.module.order.controller.admin.customerorder.vo.CustomerOrderPageReqVO;
import cn.iocoder.foodnexus.module.order.controller.admin.customerorder.vo.CustomerOrderRecordMapVO;
import cn.iocoder.foodnexus.module.order.controller.admin.customerorder.vo.CustomerOrderRespVO; import cn.iocoder.foodnexus.module.order.controller.admin.customerorder.vo.CustomerOrderRespVO;
import cn.iocoder.foodnexus.module.order.controller.admin.customerorder.vo.CustomerOrderSaveReqVO; import cn.iocoder.foodnexus.module.order.controller.admin.customerorder.vo.CustomerOrderSaveReqVO;
import cn.iocoder.foodnexus.module.order.controller.app.customerOrder.vo.AppCustomerOrderRemarkReqVO; import cn.iocoder.foodnexus.module.order.controller.app.customerOrder.vo.AppCustomerOrderRemarkReqVO;
...@@ -16,6 +17,7 @@ import cn.iocoder.foodnexus.module.order.controller.app.customerOrder.vo.AppCust ...@@ -16,6 +17,7 @@ import cn.iocoder.foodnexus.module.order.controller.app.customerOrder.vo.AppCust
import cn.iocoder.foodnexus.module.order.controller.app.customerOrder.vo.AppCustomerOrderSaveReqVO; import cn.iocoder.foodnexus.module.order.controller.app.customerOrder.vo.AppCustomerOrderSaveReqVO;
import cn.iocoder.foodnexus.module.order.dal.dataobject.customerorder.CustomerOrderDO; import cn.iocoder.foodnexus.module.order.dal.dataobject.customerorder.CustomerOrderDO;
import cn.iocoder.foodnexus.module.order.service.customerorder.CustomerOrderService; import cn.iocoder.foodnexus.module.order.service.customerorder.CustomerOrderService;
import cn.iocoder.foodnexus.module.order.service.customerorderrecord.CustomerOrderRecordService;
import cn.iocoder.foodnexus.module.system.annotations.AppSystemAuth; import cn.iocoder.foodnexus.module.system.annotations.AppSystemAuth;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
...@@ -23,6 +25,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; ...@@ -23,6 +25,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -43,6 +46,8 @@ public class AppCustomerOrderController { ...@@ -43,6 +46,8 @@ public class AppCustomerOrderController {
@Resource @Resource
private CustomerOrderService customerOrderService; private CustomerOrderService customerOrderService;
@Autowired
private CustomerOrderRecordService customerOrderRecordService;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建客户总订单") @Operation(summary = "创建客户总订单")
...@@ -97,4 +102,11 @@ public class AppCustomerOrderController { ...@@ -97,4 +102,11 @@ public class AppCustomerOrderController {
return success(BeanUtils.toBean(pageResult, CustomerOrderRespVO.class)); return success(BeanUtils.toBean(pageResult, CustomerOrderRespVO.class));
} }
@GetMapping("/record")
@Operation(summary = "订单进度")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<List<CustomerOrderRecordMapVO>> queryRecord(@RequestParam("id") Long id) {
return success(customerOrderRecordService.queryRecordMap(id));
}
} }
\ No newline at end of file
package cn.iocoder.foodnexus.module.order.service.customerorderrecord; package cn.iocoder.foodnexus.module.order.service.customerorderrecord;
import java.util.*; import java.util.*;
import cn.iocoder.foodnexus.module.order.controller.admin.customerorder.vo.CustomerOrderRecordMapVO;
import jakarta.validation.*; import jakarta.validation.*;
import cn.iocoder.foodnexus.module.order.controller.admin.customerorderrecord.vo.*; import cn.iocoder.foodnexus.module.order.controller.admin.customerorderrecord.vo.*;
import cn.iocoder.foodnexus.module.order.dal.dataobject.customerorderrecord.CustomerOrderRecordDO; import cn.iocoder.foodnexus.module.order.dal.dataobject.customerorderrecord.CustomerOrderRecordDO;
...@@ -59,4 +61,10 @@ public interface CustomerOrderRecordService { ...@@ -59,4 +61,10 @@ public interface CustomerOrderRecordService {
*/ */
PageResult<CustomerOrderRecordDO> getCustomerOrderRecordPage(CustomerOrderRecordPageReqVO pageReqVO); PageResult<CustomerOrderRecordDO> getCustomerOrderRecordPage(CustomerOrderRecordPageReqVO pageReqVO);
/**
* 订单进度记录
* @param id
* @return
*/
List<CustomerOrderRecordMapVO> queryRecordMap(Long id);
} }
\ No newline at end of file
package cn.iocoder.foodnexus.module.order.service.customerorderrecord; package cn.iocoder.foodnexus.module.order.service.customerorderrecord;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.iocoder.foodnexus.framework.common.util.CommonUtil;
import cn.iocoder.foodnexus.framework.common.util.spring.SpringUtils; import cn.iocoder.foodnexus.framework.common.util.spring.SpringUtils;
import cn.iocoder.foodnexus.module.erp.api.PurchaseOrderSplitEvent; import cn.iocoder.foodnexus.module.erp.api.PurchaseOrderSplitEvent;
import cn.iocoder.foodnexus.module.order.api.CustomerOrderApi; import cn.iocoder.foodnexus.module.order.api.CustomerOrderApi;
import cn.iocoder.foodnexus.module.order.api.CustomerOrderRecordApi; import cn.iocoder.foodnexus.module.order.api.CustomerOrderRecordApi;
import cn.iocoder.foodnexus.module.order.controller.admin.customerorder.vo.CustomerOrderRecordMapVO;
import cn.iocoder.foodnexus.module.order.dto.CustomerOrderDTO; import cn.iocoder.foodnexus.module.order.dto.CustomerOrderDTO;
import cn.iocoder.foodnexus.module.order.dto.CustomerOrderRecordEvent; import cn.iocoder.foodnexus.module.order.dto.CustomerOrderRecordEvent;
import cn.iocoder.foodnexus.module.order.enums.CustomerOrderStatus; import cn.iocoder.foodnexus.module.order.enums.CustomerOrderStatus;
...@@ -98,6 +100,27 @@ public class CustomerOrderRecordServiceImpl implements CustomerOrderRecordServic ...@@ -98,6 +100,27 @@ public class CustomerOrderRecordServiceImpl implements CustomerOrderRecordServic
return customerOrderRecordMapper.selectPage(pageReqVO); return customerOrderRecordMapper.selectPage(pageReqVO);
} }
/**
* 订单进度记录
*
* @param customerOrderId
* @return
*/
@Override
public List<CustomerOrderRecordMapVO> queryRecordMap(Long customerOrderId) {
List<CustomerOrderRecordDO> list = customerOrderRecordMapper.selectList(CustomerOrderRecordDO::getCustomerOrderId, customerOrderId);
Map<CustomerOrderStatus, List<CustomerOrderRecordDO>> map = CommonUtil.listConvertListMap(list, CustomerOrderRecordDO::getOrderStatus);
List<CustomerOrderRecordMapVO> result = new ArrayList<>();
for (Map.Entry<CustomerOrderStatus, List<CustomerOrderRecordDO>> entry : map.entrySet()) {
CustomerOrderStatus orderStatus = entry.getKey();
List<CustomerOrderRecordDO> records = entry.getValue();
result.add(new CustomerOrderRecordMapVO(orderStatus, BeanUtils.toBean(records, CustomerOrderRecordRespVO.class)));
}
result.sort(Comparator.comparingInt(vo -> vo.getOrderStatus().getSort()));
return result;
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void recordEvent(CustomerOrderRecordEvent event) { public void recordEvent(CustomerOrderRecordEvent event) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment