From 7afc363873848e561b098215d474d1777e6eeb5e Mon Sep 17 00:00:00 2001 From: woody Date: Wed, 13 Aug 2025 18:07:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(SaOrderSync):=20=E5=85=A8=E7=BD=91?= =?UTF-8?q?=E5=95=86=E5=93=81=E7=AE=A1=E7=90=86-=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/SaOrderSyncController.java | 69 +++++++++++++++++++ .../order/dto/SaOrderSyncBodyDetailDTO.java | 22 ++++++ .../sale/order/mapper/SaOrderSyncMapper.java | 17 ++++- .../sale/order/param/SaOrderSyncParam.java | 41 +++++++++++ .../order/service/ISaOrderSyncService.java | 27 +++++++- .../service/impl/SaOrderSyncServiceImpl.java | 25 ++++++- .../com/hzs/sale/order/vo/SaOrderSyncVO.java | 62 +++++++++++++++++ .../mapper/sale/order/SaOrderSyncMapper.xml | 31 ++++++++- .../common/core/enums/EOperationModule.java | 2 +- .../common/core/enums/ESaOrderSyncStatus.java | 39 +++++++++++ 10 files changed, 327 insertions(+), 8 deletions(-) create mode 100644 bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/manager/SaOrderSyncController.java create mode 100644 bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/dto/SaOrderSyncBodyDetailDTO.java create mode 100644 bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/SaOrderSyncParam.java create mode 100644 bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/vo/SaOrderSyncVO.java create mode 100644 bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ESaOrderSyncStatus.java diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/manager/SaOrderSyncController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/manager/SaOrderSyncController.java new file mode 100644 index 00000000..aff53046 --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/manager/SaOrderSyncController.java @@ -0,0 +1,69 @@ +package com.hzs.sale.order.controller.manager; + +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson2.JSON; +import com.hzs.common.core.annotation.AccessPermissions; +import com.hzs.common.core.annotation.Log; +import com.hzs.common.core.enums.EOperationMethod; +import com.hzs.common.core.enums.EOperationModule; +import com.hzs.common.core.enums.ESaOrderSyncStatus; +import com.hzs.common.core.utils.poi.ExcelUtil; +import com.hzs.common.core.web.controller.BaseController; +import com.hzs.common.core.web.domain.AjaxResult; +import com.hzs.common.core.web.page.TableDataInfo; +import com.hzs.common.security.utils.SecurityUtils; +import com.hzs.sale.order.dto.SaOrderSyncBodyDetailDTO; +import com.hzs.sale.order.param.SaOrderSyncParam; +import com.hzs.sale.order.service.ISaOrderSyncService; +import com.hzs.sale.order.vo.SaOrderSyncVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 订单同步记录控制器 + */ +@RestController +@RequestMapping("/manage/order-sync") +public class SaOrderSyncController extends BaseController { + + @Autowired + private ISaOrderSyncService orderSyncService; + + /** + * 同步订单列表 + */ + @AccessPermissions("orderSyncList") + @Log(module = EOperationModule.ORDER_SYNC, method = EOperationMethod.SELECT) + @GetMapping("list") + public TableDataInfo list(SaOrderSyncParam param) { + startPage(); + List list = orderSyncService.queryList(param, SecurityUtils.getPkCountry()); + for (SaOrderSyncVO saOrderSyncVO : list) { + saOrderSyncVO.setStatusVal(ESaOrderSyncStatus.getLabelByValue(saOrderSyncVO.getStatus())); + saOrderSyncVO.setOrderProductDetail(JSONUtil.toList(saOrderSyncVO.getBodyDetail(), SaOrderSyncBodyDetailDTO.class)); + } + return getDataTable(list); + } + + + /** + * 更新同步状态 + */ + @AccessPermissions("orderSyncUpdate") + @Log(module = EOperationModule.ORDER_SYNC, method = EOperationMethod.UPDATE) + @PostMapping("updateStatus") + public AjaxResult updateStatus(@RequestBody SaOrderSyncParam param) { + if (param.getPkId() == null) { + return AjaxResult.error("主键ID不能为空"); + } + if (param.getStatus() == null) { + return AjaxResult.error("状态不能为空"); + } + + return toAjax(orderSyncService.updateStatus(param.getPkId(), param.getStatus(), + SecurityUtils.getUserId(), SecurityUtils.getPkCountry())); + } +} diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/dto/SaOrderSyncBodyDetailDTO.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/dto/SaOrderSyncBodyDetailDTO.java new file mode 100644 index 00000000..a1c4c4f7 --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/dto/SaOrderSyncBodyDetailDTO.java @@ -0,0 +1,22 @@ +package com.hzs.sale.order.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Builder +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SaOrderSyncBodyDetailDTO { + /** + * 仓储编号 + */ + private String wmsCode; + + /** + * 变动数量 + */ + private Integer changeNum; +} diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/mapper/SaOrderSyncMapper.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/mapper/SaOrderSyncMapper.java index ff8dfead..8fd24701 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/mapper/SaOrderSyncMapper.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/mapper/SaOrderSyncMapper.java @@ -2,10 +2,23 @@ package com.hzs.sale.order.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hzs.common.domain.sale.order.SaOrderSync; +import com.hzs.sale.order.param.SaOrderSyncParam; +import com.hzs.sale.order.vo.SaOrderSyncVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** - * 订单产品同步记录 Mapper 接口 + * 订单同步记录Mapper接口 */ public interface SaOrderSyncMapper extends BaseMapper { -} + /** + * 查询订单同步记录列表 + * + * @param param 查询参数 + * @param pkCountry 国家主键 + * @return 同步记录列表 + */ + List queryList(@Param("param") SaOrderSyncParam param, @Param("pkCountry") Integer pkCountry); +} \ No newline at end of file diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/SaOrderSyncParam.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/SaOrderSyncParam.java new file mode 100644 index 00000000..64f9132e --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/param/SaOrderSyncParam.java @@ -0,0 +1,41 @@ +package com.hzs.sale.order.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 同步失败订单列表 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SaOrderSyncParam { + /** + * 同步失败主键 + */ + private Long pkId; + + /** + * 订单号 + */ + private String orderCode; + + /** + * 开始日期(yyyy-MM-dd) + */ + private String startDate; + + /** + * 结束日期(yyyy-MM-dd) + */ + private String endDate; + + /** + * 同步状态 1=失败 + */ + private Integer status; + private String statusVal; +} diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/ISaOrderSyncService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/ISaOrderSyncService.java index ce5897bc..72df92f2 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/ISaOrderSyncService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/ISaOrderSyncService.java @@ -2,10 +2,33 @@ package com.hzs.sale.order.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.sale.order.SaOrderSync; +import com.hzs.sale.order.param.SaOrderSyncParam; +import com.hzs.sale.order.vo.SaOrderSyncVO; + +import java.util.List; /** - * 订单产品同步记录 服务类 + * 订单同步记录服务接口 */ public interface ISaOrderSyncService extends IService { -} + /** + * 查询订单同步记录列表 + * + * @param param 查询参数 + * @param pkCountry 国家主键 + * @return 同步记录列表 + */ + List queryList(SaOrderSyncParam param, Integer pkCountry); + + /** + * 更新同步状态 + * + * @param pkId 主键ID + * @param status 状态 + * @param userId 用户ID + * @param pkCountry 国家主键 + * @return 是否成功 + */ + Boolean updateStatus(Long pkId, Integer status, Long userId, Integer pkCountry); +} \ No newline at end of file diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderSyncServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderSyncServiceImpl.java index bce905ad..09860e27 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderSyncServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderSyncServiceImpl.java @@ -1,15 +1,36 @@ package com.hzs.sale.order.service.impl; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.common.domain.sale.order.SaOrderSync; import com.hzs.sale.order.mapper.SaOrderSyncMapper; +import com.hzs.sale.order.param.SaOrderSyncParam; import com.hzs.sale.order.service.ISaOrderSyncService; +import com.hzs.sale.order.vo.SaOrderSyncVO; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; +import java.util.List; + /** - * 订单产品同步记录 服务实现类 + * 订单同步记录服务实现 */ @Service public class SaOrderSyncServiceImpl extends ServiceImpl implements ISaOrderSyncService { -} + @Override + public List queryList(SaOrderSyncParam param, Integer pkCountry) { + return baseMapper.queryList(param, pkCountry); + } + + @Override + public Boolean updateStatus( + Long pkId, Integer status, Long userId, Integer pkCountry + ) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(SaOrderSync::getPkId, pkId); + updateWrapper.set(SaOrderSync::getStatus, status); + + return this.update(updateWrapper); + } +} \ No newline at end of file diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/vo/SaOrderSyncVO.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/vo/SaOrderSyncVO.java new file mode 100644 index 00000000..812f65a2 --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/vo/SaOrderSyncVO.java @@ -0,0 +1,62 @@ +package com.hzs.sale.order.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.hzs.common.core.annotation.Excel; +import com.hzs.sale.order.dto.SaOrderSyncBodyDetailDTO; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 订单同步记录VO + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SaOrderSyncVO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + private Long pkId; + + /** + * 订单编号 + */ + @Excel(name = "订单编号") + private String orderCode; + + /** + * 产品明细列表 + */ + private String bodyDetail; + private List orderProductDetail; + + + /** + * 创建时间 + */ + @Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + + /** + * 同步状态(1=失败) + */ + @Excel(name = "同步状态", readConverterExp = "1=失败,0=成功") + private Integer status; + + /** + * 同步状态描述 + */ + private String statusVal; + +} diff --git a/bd-business/bd-business-sale/src/main/resources/mapper/sale/order/SaOrderSyncMapper.xml b/bd-business/bd-business-sale/src/main/resources/mapper/sale/order/SaOrderSyncMapper.xml index f4ef63e1..c4c8f343 100644 --- a/bd-business/bd-business-sale/src/main/resources/mapper/sale/order/SaOrderSyncMapper.xml +++ b/bd-business/bd-business-sale/src/main/resources/mapper/sale/order/SaOrderSyncMapper.xml @@ -2,4 +2,33 @@ - + + + + \ No newline at end of file diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationModule.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationModule.java index 9462c6a9..9c3199b4 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationModule.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOperationModule.java @@ -434,7 +434,7 @@ public enum EOperationModule { MEMBER_LEVEL_UP_RECORD("会员升级记录"), SUPPLIER_GOODS("供应商商品"), - + ORDER_SYNC("同步失败订单"), ; /** diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ESaOrderSyncStatus.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ESaOrderSyncStatus.java new file mode 100644 index 00000000..7fa9b0f2 --- /dev/null +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/ESaOrderSyncStatus.java @@ -0,0 +1,39 @@ +package com.hzs.common.core.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public enum ESaOrderSyncStatus { + FAIL(1, "失败"), + Handled(0, "已处理") + ; + + /** + * 实际值 + */ + private final int value; + /** + * 显示标签 + */ + private final String label; + + /** + * 根据枚举值获取枚举 + * + * @param value + * @return + */ + public static String getLabelByValue(Integer value) { + if (null == value) { + return ""; + } + for (ESaOrderSyncStatus enums : ESaOrderSyncStatus.values()) { + if (enums.getValue() == value) { + return enums.getLabel(); + } + } + return ""; + } +}