From 4bff36647105e09bfa3b697cfb2d903da42ddf2d Mon Sep 17 00:00:00 2001 From: dev <182542500@qq.com> Date: Mon, 4 Aug 2025 17:18:52 +0800 Subject: [PATCH] =?UTF-8?q?7=E6=9C=88=E6=96=B0=E9=9C=80=E6=B1=82=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BizOrderOutItemController.java | 106 ++++++ .../controller/BizPackingSpecsController.java | 106 ++++++ .../BizPurchaseOutOrderController.java | 122 +++++++ .../controller/BizSendOrderController.java | 11 +- .../BizSendOrderItemController.java | 106 ++++++ .../controller/SysAmazonStoreController.java | 22 ++ .../asinkj/amz/domain/BizOrderOutItem.java | 100 ++++++ .../asinkj/amz/domain/BizPackingSpecs.java | 76 +++++ .../asinkj/amz/domain/BizPurchaseOrder.java | 4 +- .../amz/domain/BizPurchaseOrderItem.java | 10 +- .../amz/domain/BizPurchaseOutOrder.java | 121 +++++++ .../org/asinkj/amz/domain/BizSendOrder.java | 3 + .../asinkj/amz/domain/BizSendOrderItem.java | 66 ++++ .../asinkj/amz/domain/BizShipmentPlan.java | 3 + .../amz/domain/bo/BizOrderOutItemBo.java | 101 ++++++ .../amz/domain/bo/BizPackingSpecsBo.java | 78 +++++ .../amz/domain/bo/BizPurchaseOutOrderBo.java | 134 ++++++++ .../asinkj/amz/domain/bo/BizSendOrderBo.java | 13 +- .../amz/domain/bo/BizSendOrderItemBo.java | 65 ++++ .../amz/domain/bo/BizShipmentPlanBo.java | 3 + .../amz/domain/vo/BizOrderOutItemVo.java | 135 ++++++++ .../amz/domain/vo/BizPackingSpecsVo.java | 94 ++++++ .../amz/domain/vo/BizPurchaseOrderItemVo.java | 20 +- .../amz/domain/vo/BizPurchaseOrderVo.java | 7 +- .../amz/domain/vo/BizPurchaseOutOrderVo.java | 145 ++++++++ .../amz/domain/vo/BizSendOrderItemVo.java | 73 ++++ .../asinkj/amz/domain/vo/BizSendOrderVo.java | 8 + .../amz/domain/vo/BizShipmentPlanVo.java | 3 + .../amz/dubbo/RemoteFBADataServiceImpl.java | 10 + .../amz/mapper/BizOrderOutItemMapper.java | 16 + .../amz/mapper/BizPackingSpecsMapper.java | 16 + .../amz/mapper/BizPurchaseOutOrderMapper.java | 16 + .../amz/mapper/BizSendOrderItemMapper.java | 16 + .../amz/service/IBizOrderOutItemService.java | 69 ++++ .../amz/service/IBizPackingSpecsService.java | 69 ++++ .../service/IBizPurchaseOutOrderService.java | 71 ++++ .../amz/service/IBizSendOrderItemService.java | 69 ++++ .../amz/service/IBizSendOrderService.java | 2 + .../amz/service/ISysAmazonStoreService.java | 2 + .../impl/BizOrderOutItemServiceImpl.java | 140 ++++++++ .../impl/BizPackingSpecsServiceImpl.java | 136 ++++++++ .../impl/BizPurchaseOrderServiceImpl.java | 35 +- .../impl/BizPurchaseOutOrderServiceImpl.java | 311 ++++++++++++++++++ .../impl/BizSendOrderItemServiceImpl.java | 133 ++++++++ .../service/impl/BizSendOrderServiceImpl.java | 71 +++- .../impl/BizShipmentPlanServiceImpl.java | 14 +- .../impl/SysAmazonStoreServiceImpl.java | 134 +++++++- .../asinkj/asinking/entity/OutOrderItem.java | 51 +++ .../asinking/entity/PurchaseOutOrder.java | 72 ++++ .../mapper/amz/BizOrderOutItemMapper.xml | 7 + .../mapper/amz/BizPackingSpecsMapper.xml | 7 + .../mapper/amz/BizPurchaseOutOrderMapper.xml | 7 + .../mapper/amz/BizSendOrderItemMapper.xml | 7 + 53 files changed, 3179 insertions(+), 37 deletions(-) create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizOrderOutItemController.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPackingSpecsController.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPurchaseOutOrderController.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendOrderItemController.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizOrderOutItem.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPackingSpecs.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOutOrder.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrderItem.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizOrderOutItemBo.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizPackingSpecsBo.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizPurchaseOutOrderBo.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizSendOrderItemBo.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizOrderOutItemVo.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPackingSpecsVo.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOutOrderVo.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderItemVo.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizOrderOutItemMapper.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizPackingSpecsMapper.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizPurchaseOutOrderMapper.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendOrderItemMapper.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizOrderOutItemService.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPackingSpecsService.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPurchaseOutOrderService.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendOrderItemService.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizOrderOutItemServiceImpl.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPackingSpecsServiceImpl.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPurchaseOutOrderServiceImpl.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderItemServiceImpl.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/asinking/entity/OutOrderItem.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/asinking/entity/PurchaseOutOrder.java create mode 100644 asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizOrderOutItemMapper.xml create mode 100644 asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizPackingSpecsMapper.xml create mode 100644 asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizPurchaseOutOrderMapper.xml create mode 100644 asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendOrderItemMapper.xml diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizOrderOutItemController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizOrderOutItemController.java new file mode 100644 index 0000000..f53bc32 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizOrderOutItemController.java @@ -0,0 +1,106 @@ +package org.asinkj.amz.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.asinkj.common.idempotent.annotation.RepeatSubmit; +import org.asinkj.common.log.annotation.Log; +import org.asinkj.common.web.core.BaseController; +import org.asinkj.common.mybatis.core.page.PageQuery; +import org.asinkj.common.core.domain.R; +import org.asinkj.common.core.validate.AddGroup; +import org.asinkj.common.core.validate.EditGroup; +import org.asinkj.common.log.enums.BusinessType; +import org.asinkj.common.excel.utils.ExcelUtil; +import org.asinkj.amz.domain.vo.BizOrderOutItemVo; +import org.asinkj.amz.domain.bo.BizOrderOutItemBo; +import org.asinkj.amz.service.IBizOrderOutItemService; +import org.asinkj.common.mybatis.core.page.TableDataInfo; + +/** + * 采购订单明细 + * 前端访问路由地址为:/amz/orderOutItem + * + * @author shuo hu + * @date 2025-07-22 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/orderOutItem") +public class BizOrderOutItemController extends BaseController { + + private final IBizOrderOutItemService bizOrderOutItemService; + + /** + * 查询采购订单明细列表 + */ + @SaCheckPermission("amz:orderOutItem:list") + @GetMapping("/list") + public TableDataInfo list(BizOrderOutItemBo bo, PageQuery pageQuery) { + return bizOrderOutItemService.queryPageList(bo, pageQuery); + } + + /** + * 导出采购订单明细列表 + */ + @SaCheckPermission("amz:orderOutItem:export") + @Log(title = "采购订单明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BizOrderOutItemBo bo, HttpServletResponse response) { + List list = bizOrderOutItemService.queryList(bo); + ExcelUtil.exportExcel(list, "采购订单明细", BizOrderOutItemVo.class, response); + } + + /** + * 获取采购订单明细详细信息 + * + * @param tenantId 主键 + */ + @SaCheckPermission("amz:orderOutItem:query") + @GetMapping("/{tenantId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable String tenantId) { + return R.ok(bizOrderOutItemService.queryById(tenantId)); + } + + /** + * 新增采购订单明细 + */ + @SaCheckPermission("amz:orderOutItem:add") + @Log(title = "采购订单明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BizOrderOutItemBo bo) { + return toAjax(bizOrderOutItemService.insertByBo(bo)); + } + + /** + * 修改采购订单明细 + */ + @SaCheckPermission("amz:orderOutItem:edit") + @Log(title = "采购订单明细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BizOrderOutItemBo bo) { + return toAjax(bizOrderOutItemService.updateByBo(bo)); + } + + /** + * 删除采购订单明细 + * + * @param tenantIds 主键串 + */ + @SaCheckPermission("amz:orderOutItem:remove") + @Log(title = "采购订单明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{tenantIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable String[] tenantIds) { + return toAjax(bizOrderOutItemService.deleteWithValidByIds(List.of(tenantIds), true)); + } +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPackingSpecsController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPackingSpecsController.java new file mode 100644 index 0000000..45ce6e3 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPackingSpecsController.java @@ -0,0 +1,106 @@ +package org.asinkj.amz.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.asinkj.common.idempotent.annotation.RepeatSubmit; +import org.asinkj.common.log.annotation.Log; +import org.asinkj.common.web.core.BaseController; +import org.asinkj.common.mybatis.core.page.PageQuery; +import org.asinkj.common.core.domain.R; +import org.asinkj.common.core.validate.AddGroup; +import org.asinkj.common.core.validate.EditGroup; +import org.asinkj.common.log.enums.BusinessType; +import org.asinkj.common.excel.utils.ExcelUtil; +import org.asinkj.amz.domain.vo.BizPackingSpecsVo; +import org.asinkj.amz.domain.bo.BizPackingSpecsBo; +import org.asinkj.amz.service.IBizPackingSpecsService; +import org.asinkj.common.mybatis.core.page.TableDataInfo; + +/** + * 产品装箱规格 + * 前端访问路由地址为:/amz/packingSpecs + * + * @author shuo hu + * @date 2025-07-17 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/packingSpecs") +public class BizPackingSpecsController extends BaseController { + + private final IBizPackingSpecsService bizPackingSpecsService; + + /** + * 查询产品装箱规格列表 + */ + @SaCheckPermission("amz:packingSpecs:list") + @GetMapping("/list") + public TableDataInfo list(BizPackingSpecsBo bo, PageQuery pageQuery) { + return bizPackingSpecsService.queryPageList(bo, pageQuery); + } + + /** + * 导出产品装箱规格列表 + */ + @SaCheckPermission("amz:packingSpecs:export") + @Log(title = "产品装箱规格", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BizPackingSpecsBo bo, HttpServletResponse response) { + List list = bizPackingSpecsService.queryList(bo); + ExcelUtil.exportExcel(list, "产品装箱规格", BizPackingSpecsVo.class, response); + } + + /** + * 获取产品装箱规格详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("amz:packingSpecs:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(bizPackingSpecsService.queryById(id)); + } + + /** + * 新增产品装箱规格 + */ + @SaCheckPermission("amz:packingSpecs:add") + @Log(title = "产品装箱规格", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BizPackingSpecsBo bo) { + return toAjax(bizPackingSpecsService.insertByBo(bo)); + } + + /** + * 修改产品装箱规格 + */ + @SaCheckPermission("amz:packingSpecs:edit") + @Log(title = "产品装箱规格", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BizPackingSpecsBo bo) { + return toAjax(bizPackingSpecsService.updateByBo(bo)); + } + + /** + * 删除产品装箱规格 + * + * @param ids 主键串 + */ + @SaCheckPermission("amz:packingSpecs:remove") + @Log(title = "产品装箱规格", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(bizPackingSpecsService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPurchaseOutOrderController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPurchaseOutOrderController.java new file mode 100644 index 0000000..559a7c9 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPurchaseOutOrderController.java @@ -0,0 +1,122 @@ +package org.asinkj.amz.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.asinkj.common.idempotent.annotation.RepeatSubmit; +import org.asinkj.common.log.annotation.Log; +import org.asinkj.common.web.core.BaseController; +import org.asinkj.common.mybatis.core.page.PageQuery; +import org.asinkj.common.core.domain.R; +import org.asinkj.common.core.validate.AddGroup; +import org.asinkj.common.core.validate.EditGroup; +import org.asinkj.common.log.enums.BusinessType; +import org.asinkj.common.excel.utils.ExcelUtil; +import org.asinkj.amz.domain.vo.BizPurchaseOutOrderVo; +import org.asinkj.amz.domain.bo.BizPurchaseOutOrderBo; +import org.asinkj.amz.service.IBizPurchaseOutOrderService; +import org.asinkj.common.mybatis.core.page.TableDataInfo; + +/** + * 组合订单 + * 前端访问路由地址为:/amz/purchaseOutOrder + * + * @author shuo hu + * @date 2025-07-22 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/purchaseOutOrder") +public class BizPurchaseOutOrderController extends BaseController { + + private final IBizPurchaseOutOrderService bizPurchaseOutOrderService; + + /** + * 查询组合订单列表 + */ + @SaCheckPermission("amz:purchaseOutOrder:list") + @GetMapping("/list") + public TableDataInfo list(BizPurchaseOutOrderBo bo, PageQuery pageQuery) { + return bizPurchaseOutOrderService.queryPageList(bo, pageQuery); + } + + /** + * 导出组合订单列表 + */ + @SaCheckPermission("amz:purchaseOutOrder:export") + @Log(title = "组合订单", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BizPurchaseOutOrderBo bo, HttpServletResponse response) { + List list = bizPurchaseOutOrderService.queryList(bo); + ExcelUtil.exportExcel(list, "组合订单", BizPurchaseOutOrderVo.class, response); + } + + /** + * 获取组合订单详细信息 + * + * @param tenantId 主键 + */ + @SaCheckPermission("amz:purchaseOutOrder:query") + @GetMapping("/{tenantId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable String tenantId) { + return R.ok(bizPurchaseOutOrderService.queryByPurchaseId(tenantId)); + } + + /** + * 新增组合订单 + */ + @SaCheckPermission("amz:purchaseOutOrder:add") + @Log(title = "组合订单", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BizPurchaseOutOrderBo bo) { + return toAjax(bizPurchaseOutOrderService.insertByBo(bo)); + } + + /** + * 修改组合订单 + */ + @SaCheckPermission("amz:purchaseOutOrder:edit") + @Log(title = "组合订单", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BizPurchaseOutOrderBo bo) { + return toAjax(bizPurchaseOutOrderService.updateByBo(bo)); + } + + + + + /** + * 删除组合订单 + * + * @param tenantIds 主键串 + */ + @SaCheckPermission("amz:purchaseOutOrder:remove") + @Log(title = "组合订单", businessType = BusinessType.DELETE) + @DeleteMapping("/{tenantIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable String[] tenantIds) { + return toAjax(bizPurchaseOutOrderService.deleteWithValidByIds(List.of(tenantIds), true)); + } + + + + @SaCheckPermission("amz:purchaseOutOrder:edit") + @Log(title = "创建发货订单", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping("submit") + public R submit(@Validated(EditGroup.class) @RequestBody BizPurchaseOutOrderBo bo) { + bizPurchaseOutOrderService.createSendOrderByBo(bo); + return R.ok(); + } + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendOrderController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendOrderController.java index 61e83a6..58bcec9 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendOrderController.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendOrderController.java @@ -74,7 +74,7 @@ public class BizSendOrderController extends BaseController { /** * 新增供应商创建的发货单 */ - @SaCheckRole(value = {"gongying", "superadmin"}, mode = SaMode.OR) + @SaCheckRole(value = {"gongying", "superadmin", "gengdan"}, mode = SaMode.OR) @Log(title = "供应商创建的发货单", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() @@ -94,6 +94,15 @@ public class BizSendOrderController extends BaseController { } + @SaCheckRole(value = {"gongying", "gengdan", "superadmin", "yunying"}, mode = SaMode.OR) + @Log(title = "供应商创建的发货单", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PostMapping("/data") + public R setData(@Validated(EditGroup.class) @RequestBody BizSendOrderBo bo) { + return toAjax(bizSendOrderService.updateDataByBo(bo)); + } + + @SaCheckRole(value = {"gongying", "gengdan", "superadmin"}, mode = SaMode.OR) @Log(title = "供应商创建的发货单", businessType = BusinessType.UPDATE) @RepeatSubmit() diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendOrderItemController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendOrderItemController.java new file mode 100644 index 0000000..0fdb5de --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendOrderItemController.java @@ -0,0 +1,106 @@ +package org.asinkj.amz.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.asinkj.common.idempotent.annotation.RepeatSubmit; +import org.asinkj.common.log.annotation.Log; +import org.asinkj.common.web.core.BaseController; +import org.asinkj.common.mybatis.core.page.PageQuery; +import org.asinkj.common.core.domain.R; +import org.asinkj.common.core.validate.AddGroup; +import org.asinkj.common.core.validate.EditGroup; +import org.asinkj.common.log.enums.BusinessType; +import org.asinkj.common.excel.utils.ExcelUtil; +import org.asinkj.amz.domain.vo.BizSendOrderItemVo; +import org.asinkj.amz.domain.bo.BizSendOrderItemBo; +import org.asinkj.amz.service.IBizSendOrderItemService; +import org.asinkj.common.mybatis.core.page.TableDataInfo; + +/** + * 供应商创建的发货单明细 + * 前端访问路由地址为:/amz/sendOrderItem + * + * @author shuo hu + * @date 2025-07-24 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/sendOrderItem") +public class BizSendOrderItemController extends BaseController { + + private final IBizSendOrderItemService bizSendOrderItemService; + + /** + * 查询供应商创建的发货单明细列表 + */ + @SaCheckPermission("amz:sendOrderItem:list") + @GetMapping("/list") + public TableDataInfo list(BizSendOrderItemBo bo, PageQuery pageQuery) { + return bizSendOrderItemService.queryPageList(bo, pageQuery); + } + + /** + * 导出供应商创建的发货单明细列表 + */ + @SaCheckPermission("amz:sendOrderItem:export") + @Log(title = "供应商创建的发货单明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(BizSendOrderItemBo bo, HttpServletResponse response) { + List list = bizSendOrderItemService.queryList(bo); + ExcelUtil.exportExcel(list, "供应商创建的发货单明细", BizSendOrderItemVo.class, response); + } + + /** + * 获取供应商创建的发货单明细详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("amz:sendOrderItem:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(bizSendOrderItemService.queryById(id)); + } + + /** + * 新增供应商创建的发货单明细 + */ + @SaCheckPermission("amz:sendOrderItem:add") + @Log(title = "供应商创建的发货单明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody BizSendOrderItemBo bo) { + return toAjax(bizSendOrderItemService.insertByBo(bo)); + } + + /** + * 修改供应商创建的发货单明细 + */ + @SaCheckPermission("amz:sendOrderItem:edit") + @Log(title = "供应商创建的发货单明细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody BizSendOrderItemBo bo) { + return toAjax(bizSendOrderItemService.updateByBo(bo)); + } + + /** + * 删除供应商创建的发货单明细 + * + * @param ids 主键串 + */ + @SaCheckPermission("amz:sendOrderItem:remove") + @Log(title = "供应商创建的发货单明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(bizSendOrderItemService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/SysAmazonStoreController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/SysAmazonStoreController.java index 170f013..d062ad3 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/SysAmazonStoreController.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/SysAmazonStoreController.java @@ -186,6 +186,28 @@ public class SysAmazonStoreController extends BaseController { return R.ok(); } + + /** + * 获取委外组合订单 + * @param startDate + * @param endDate + * @return + */ + @GetMapping("/purchaseOrderOut/{startDate}/{endDate}") + public R updatePurchaseOrderOutSeller(@PathVariable String startDate, @PathVariable String endDate) { + try { + sysAmazonStoreService.pullPurchaseOutOrderData(startDate, endDate, new LingxinCallback() { + @Override + public void onFinished(String result, int status) { + + } + }); + } catch (Exception e) { + throw new RuntimeException(e); + } + return R.ok(); + } + @SaCheckPermission("amz:amazonStore:remove") @Log(title = "亚马逊FBAtest", businessType = BusinessType.OTHER) @GetMapping("/test") diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizOrderOutItem.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizOrderOutItem.java new file mode 100644 index 0000000..cff3829 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizOrderOutItem.java @@ -0,0 +1,100 @@ +package org.asinkj.amz.domain; + +import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.AutoMapping; +import org.asinkj.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 采购订单明细对象 biz_order_out_item + * + * @author shuo hu + * @date 2025-07-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("biz_order_out_item") +public class BizOrderOutItem extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + private String purchaseOrderSn; + + /** + * 删除标志(0正常 2删除) + */ + @TableLogic + private String delFlag; + + /** + * 明细项自增主键 + */ + @TableId(value = "item_id", type = IdType.ASSIGN_ID) + private Long itemId; + + /** + * 关联采购订单号 (外键) + */ + private String outOrderSn; + + /** + * 产品名称 + */ + private String productName; + + /** + * SKU编码 + */ + private String sku; + + /** + * 采购需求数量 + */ + private Long quantityRequire; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @AutoMapping(dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date bizCreateTime; + + /** + * 创建人姓名 + */ + private String createRealname; + + /** + * 预计到达时间 + */ + private String expectArriveTime; + + /** + * 仓库名称 + */ + private String warehouseName; + + /** + * 供应商名称 + */ + private String supplierName; + + /** + * 实际到货数量 + */ + private Long quantityReal; + + /** + * 已入库数量 + */ + private Long quantityEntry; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPackingSpecs.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPackingSpecs.java new file mode 100644 index 0000000..4db3235 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPackingSpecs.java @@ -0,0 +1,76 @@ +package org.asinkj.amz.domain; + +import org.asinkj.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 产品装箱规格对象 biz_packing_specs + * + * @author shuo hu + * @date 2025-07-17 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("biz_packing_specs") +public class BizPackingSpecs extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 规格ID(主键) + */ + private Long id; + + /** + * 关联采购单明细项ID + */ + private Long sendOrderId; + + /** + * 规格名称(如规格A) + */ + private String specName; + + /** + * 箱数(单位:箱) + */ + private Long cartonCount; + + /** + * 每箱件数(单位:件) + */ + private Long piecesPerCarton; + + /** + * 箱子长度(单位:厘米) + */ + private Long length; + + /** + * 箱子宽度(单位:厘米) + */ + private Long width; + + /** + * 箱子高度(单位:厘米) + */ + private Long height; + + /** + * 单箱重量(单位:千克) + */ + private Long weight; + + /** + * 删除标志(0正常 2删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOrder.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOrder.java index 4c9d8a7..4707892 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOrder.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOrder.java @@ -297,8 +297,6 @@ public class BizPurchaseOrder extends TenantEntity { private String storeName; - - - + private String type; } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOrderItem.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOrderItem.java index 3f8d3cc..ef7292e 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOrderItem.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOrderItem.java @@ -128,6 +128,9 @@ public class BizPurchaseOrderItem extends TenantEntity { */ private Long quantityQc; + + + /** * 待质检量 */ @@ -190,14 +193,7 @@ public class BizPurchaseOrderItem extends TenantEntity { private Long sfgAvlQty; private String orderStatus; - @TableField(exist = false) - private List sysStatusHistories; - @TableField(exist = false) - private String hasForward = "N"; - - @TableField(exist = false) - private String hasSendOrder = "N"; } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOutOrder.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOutOrder.java new file mode 100644 index 0000000..e5a71cb --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizPurchaseOutOrder.java @@ -0,0 +1,121 @@ +package org.asinkj.amz.domain; + +import io.github.linpeilie.annotations.AutoMapping; +import org.asinkj.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 组合订单对象 biz_purchase_out_order + * + * @author shuo hu + * @date 2025-07-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("biz_purchase_out_order") +public class BizPurchaseOutOrder extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 删除标志(0正常 2删除) + */ + @TableLogic + private String delFlag; + + /** + * 订单唯一编号 + */ + private String orderSn; + + /** + * 仓库名称 + */ + private String warehouseName; + + /** + * 外包仓库名称 + */ + private String outsourceWarehouseName; + + /** + * 供应商名称 + */ + private String supplierName; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @AutoMapping(dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date bizCreateTime; + + /** + * 状态文本描述 + */ + private String statusText; + + /** + * 创建人姓名 + */ + private String createRealname; + + /** + * PTP流水号 + */ + private String ptpSn; + + /** + * 产品名称 + */ + private String productName; + + /** + * 标准SKU编码 + */ + private String sku; + + /** + * FNSKU编码 + */ + private String fnsku; + + /** + * 外包数量 + */ + private Long outsourceQuantity; + + /** + * 实收数量 + */ + private Long receiveQuantity; + + /** + * 预计到达时间 + */ + private String expectArriveTime; + + /** + * MSKU编码列表 (数组存储) + */ + private String msku; + + /** + * 关联计划单号列表 (数组存储) + */ + private String planSn; + + /** + * 销售商名称 + */ + private String sellerName; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrder.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrder.java index 96da1cc..cffb1f0 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrder.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrder.java @@ -112,5 +112,8 @@ public class BizSendOrder extends TenantEntity { @TableField(exist = false) private String shipmentIdKey; + private String type; + + private String createName; } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrderItem.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrderItem.java new file mode 100644 index 0000000..3ca7ce2 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizSendOrderItem.java @@ -0,0 +1,66 @@ +package org.asinkj.amz.domain; + +import org.asinkj.common.tenant.core.TenantEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 供应商创建的发货单明细对象 biz_send_order_item + * + * @author shuo hu + * @date 2025-07-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("biz_send_order_item") +public class BizSendOrderItem extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + private Long id; + + /** + * 删除标志(0正常 2删除) + */ + @TableLogic + private String delFlag; + + /** + * 采购单号 + */ + private String orderSn; + + /** + * 发货日期 + */ + private Date sendDate; + + /** + * 发货日期 + */ + private String storeName; + + /** + * 发货日期 + */ + private String productName; + + private String sku; + + /** + * 发货日期 + */ + private Long quantitySend; + + private Long mainOrderSn; + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizShipmentPlan.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizShipmentPlan.java index 445dde5..3a774ce 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizShipmentPlan.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizShipmentPlan.java @@ -191,5 +191,8 @@ public class BizShipmentPlan extends TenantEntity { private String address; + private Long itemCount; + + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizOrderOutItemBo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizOrderOutItemBo.java new file mode 100644 index 0000000..5da7bca --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizOrderOutItemBo.java @@ -0,0 +1,101 @@ +package org.asinkj.amz.domain.bo; + +import org.asinkj.amz.domain.BizOrderOutItem; +import org.asinkj.common.mybatis.core.domain.BaseEntity; +import org.asinkj.common.core.validate.AddGroup; +import org.asinkj.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 采购订单明细业务对象 biz_order_out_item + * + * @author shuo hu + * @date 2025-07-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BizOrderOutItem.class, reverseConvertGenerate = false) +public class BizOrderOutItemBo extends BaseEntity { + + + private String purchaseOrderSn; + + /** + * 明细项自增主键 + */ + @NotNull(message = "明细项自增主键不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long itemId; + + /** + * 关联采购订单号 (外键) + */ + @NotBlank(message = "关联采购订单号 (外键)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String outOrderSn; + + /** + * 产品名称 + */ + @NotBlank(message = "产品名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String productName; + + /** + * SKU编码 + */ + @NotBlank(message = "SKU编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sku; + + /** + * 采购需求数量 + */ + @NotNull(message = "采购需求数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long quantityRequire; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + @NotNull(message = "业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date bizCreateTime; + + /** + * 创建人姓名 + */ + @NotBlank(message = "创建人姓名不能为空", groups = { AddGroup.class, EditGroup.class }) + private String createRealname; + + /** + * 预计到达时间 + */ + @NotBlank(message = "预计到达时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private String expectArriveTime; + + /** + * 仓库名称 + */ + @NotBlank(message = "仓库名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String warehouseName; + + /** + * 供应商名称 + */ + @NotBlank(message = "供应商名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String supplierName; + + /** + * 实际到货数量 + */ + @NotNull(message = "实际到货数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long quantityReal; + + /** + * 已入库数量 + */ + @NotNull(message = "已入库数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long quantityEntry; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizPackingSpecsBo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizPackingSpecsBo.java new file mode 100644 index 0000000..4f12e2f --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizPackingSpecsBo.java @@ -0,0 +1,78 @@ +package org.asinkj.amz.domain.bo; + +import org.asinkj.amz.domain.BizPackingSpecs; +import org.asinkj.common.mybatis.core.domain.BaseEntity; +import org.asinkj.common.core.validate.AddGroup; +import org.asinkj.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +/** + * 产品装箱规格业务对象 biz_packing_specs + * + * @author shuo hu + * @date 2025-07-17 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BizPackingSpecs.class, reverseConvertGenerate = false) +public class BizPackingSpecsBo extends BaseEntity { + + /** + * 规格ID(主键) + */ + @NotNull(message = "规格ID(主键)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long id; + + /** + * 关联采购单明细项ID + */ + @NotNull(message = "关联采购单明细项ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long sendOrderId; + + /** + * 规格名称(如规格A) + */ + @NotBlank(message = "规格名称(如规格A)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String specName; + + /** + * 箱数(单位:箱) + */ + @NotNull(message = "箱数(单位:箱)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long cartonCount; + + /** + * 每箱件数(单位:件) + */ + @NotNull(message = "每箱件数(单位:件)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long piecesPerCarton; + + /** + * 箱子长度(单位:厘米) + */ + @NotNull(message = "箱子长度(单位:厘米)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long length; + + /** + * 箱子宽度(单位:厘米) + */ + @NotNull(message = "箱子宽度(单位:厘米)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long width; + + /** + * 箱子高度(单位:厘米) + */ + @NotNull(message = "箱子高度(单位:厘米)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long height; + + /** + * 单箱重量(单位:千克) + */ + @NotNull(message = "单箱重量(单位:千克)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long weight; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizPurchaseOutOrderBo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizPurchaseOutOrderBo.java new file mode 100644 index 0000000..b0d390c --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizPurchaseOutOrderBo.java @@ -0,0 +1,134 @@ +package org.asinkj.amz.domain.bo; + +import org.asinkj.amz.domain.BizPurchaseOutOrder; +import org.asinkj.amz.domain.vo.BizOrderOutItemVo; +import org.asinkj.common.mybatis.core.domain.BaseEntity; +import org.asinkj.common.core.validate.AddGroup; +import org.asinkj.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 组合订单业务对象 biz_purchase_out_order + * + * @author shuo hu + * @date 2025-07-22 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BizPurchaseOutOrder.class, reverseConvertGenerate = false) +public class BizPurchaseOutOrderBo extends BaseEntity { + + /** + * 订单唯一编号 + */ + @NotBlank(message = "订单唯一编号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String orderSn; + + /** + * 仓库名称 + */ + @NotBlank(message = "仓库名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String warehouseName; + + /** + * 外包仓库名称 + */ + @NotBlank(message = "外包仓库名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String outsourceWarehouseName; + + /** + * 供应商名称 + */ + @NotBlank(message = "供应商名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String supplierName; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + @NotNull(message = "业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date bizCreateTime; + + /** + * 状态文本描述 + */ + @NotBlank(message = "状态文本描述不能为空", groups = { AddGroup.class, EditGroup.class }) + private String statusText; + + /** + * 创建人姓名 + */ + @NotBlank(message = "创建人姓名不能为空", groups = { AddGroup.class, EditGroup.class }) + private String createRealname; + + /** + * PTP流水号 + */ +// @NotBlank(message = "PTP流水号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String ptpSn; + + /** + * 产品名称 + */ + @NotBlank(message = "产品名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String productName; + + /** + * 标准SKU编码 + */ +// @NotBlank(message = "标准SKU编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sku; + + /** + * FNSKU编码 + */ +// @NotBlank(message = "FNSKU编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String fnsku; + + /** + * 外包数量 + */ + @NotNull(message = "外包数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long outsourceQuantity; + + /** + * 实收数量 + */ + @NotNull(message = "实收数量不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long receiveQuantity; + + /** + * 预计到达时间 + */ +// @NotBlank(message = "预计到达时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private String expectArriveTime; + + /** + * MSKU编码列表 (数组存储) + */ +// @NotBlank(message = "MSKU编码列表 (数组存储)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String msku; + + /** + * 关联计划单号列表 (数组存储) + */ +// @NotBlank(message = "关联计划单号列表 (数组存储)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String planSn; + + /** + * 销售商名称 + */ + @NotBlank(message = "销售商名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sellerName; + + + private List items; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizSendOrderBo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizSendOrderBo.java index 611e38d..68791e8 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizSendOrderBo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizSendOrderBo.java @@ -10,6 +10,7 @@ import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; import java.util.Date; +import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; @@ -57,6 +58,9 @@ public class BizSendOrderBo extends BaseEntity { @NotBlank(message = "产品名称不能为空", groups = {AddGroup.class, EditGroup.class}) private String productName; + // @NotBlank(message = "sku不能为空", groups = {AddGroup.class, EditGroup.class}) + private String sku; + /** * 发货数量 */ @@ -72,19 +76,19 @@ public class BizSendOrderBo extends BaseEntity { /** * 箱数 */ - @NotNull(message = "箱数不能为空", groups = {AddGroup.class, EditGroup.class}) +// @NotNull(message = "箱数不能为空", groups = {AddGroup.class, EditGroup.class}) private Long boxCount; /** * 箱子尺寸 */ - @NotBlank(message = "箱子尺寸不能为空", groups = {AddGroup.class, EditGroup.class}) +// @NotBlank(message = "箱子尺寸不能为空", groups = {AddGroup.class, EditGroup.class}) private String boxDimensions; /** * 单箱重量 */ - @NotNull(message = "单箱重量不能为空", groups = {AddGroup.class, EditGroup.class}) +// @NotNull(message = "单箱重量不能为空", groups = {AddGroup.class, EditGroup.class}) private Long weightPerBox; /** @@ -113,5 +117,8 @@ public class BizSendOrderBo extends BaseEntity { private String shipmentId; + private List packingSpecsList; + + private String createName; } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizSendOrderItemBo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizSendOrderItemBo.java new file mode 100644 index 0000000..cb7c61a --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizSendOrderItemBo.java @@ -0,0 +1,65 @@ +package org.asinkj.amz.domain.bo; + +import org.asinkj.amz.domain.BizSendOrderItem; +import org.asinkj.common.mybatis.core.domain.BaseEntity; +import org.asinkj.common.core.validate.AddGroup; +import org.asinkj.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 供应商创建的发货单明细业务对象 biz_send_order_item + * + * @author shuo hu + * @date 2025-07-24 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = BizSendOrderItem.class, reverseConvertGenerate = false) +public class BizSendOrderItemBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long id; + + /** + * 采购单号 + */ + @NotBlank(message = "采购单号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String orderSn; + + /** + * 发货日期 + */ + @NotNull(message = "发货日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date sendDate; + + /** + * 发货日期 + */ + @NotBlank(message = "发货日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private String storeName; + + /** + * 发货日期 + */ + @NotBlank(message = "发货日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private String productName; + + /** + * 发货日期 + */ + @NotNull(message = "发货日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long quantitySend; + + + private String sku; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizShipmentPlanBo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizShipmentPlanBo.java index 13639ee..098b066 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizShipmentPlanBo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizShipmentPlanBo.java @@ -183,6 +183,9 @@ public class BizShipmentPlanBo extends BaseEntity { // @NotNull(message = "套数(系统中的申报量)不能为空", groups = { AddGroup.class, EditGroup.class }) private Long setTotal; + + private Long itemCount; + /** * 渠道ID */ diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizOrderOutItemVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizOrderOutItemVo.java new file mode 100644 index 0000000..1e7422a --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizOrderOutItemVo.java @@ -0,0 +1,135 @@ +package org.asinkj.amz.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.asinkj.amz.domain.BizOrderOutItem; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.asinkj.amz.domain.BizPurchaseOrder; +import org.asinkj.amz.domain.BizPurchaseOrderItem; +import org.asinkj.amz.domain.BizShipForward; +import org.asinkj.common.excel.annotation.ExcelDictFormat; +import org.asinkj.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 采购订单明细视图对象 biz_order_out_item + * + * @author shuo hu + * @date 2025-07-22 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BizOrderOutItem.class) +public class BizOrderOutItemVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + + @ExcelProperty(value = "采购订单号") + private String purchaseOrderSn; + + /** + * 明细项自增主键 + */ + @ExcelProperty(value = "明细项自增主键") + private Long itemId; + + @ExcelProperty(value = "比例") + private BigDecimal ratio; + + /** + * 关联采购订单号 (外键) + */ + @ExcelProperty(value = "关联采购订单号 (外键)") + private String outOrderSn; + + /** + * 产品名称 + */ + @ExcelProperty(value = "产品名称") + private String productName; + + /** + * SKU编码 + */ + @ExcelProperty(value = "SKU编码") + private String sku; + + /** + * 采购需求数量 + */ + @ExcelProperty(value = "采购需求数量") + private Long quantityRequire; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + @ExcelProperty(value = "业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss)") + private Date bizCreateTime; + + /** + * 创建人姓名 + */ + @ExcelProperty(value = "创建人姓名") + private String createRealname; + + /** + * 预计到达时间 + */ + @ExcelProperty(value = "预计到达时间") + private String expectArriveTime; + + /** + * 仓库名称 + */ + @ExcelProperty(value = "仓库名称") + private String warehouseName; + + /** + * 供应商名称 + */ + @ExcelProperty(value = "供应商名称") + private String supplierName; + + /** + * 实际到货数量 + */ + @ExcelProperty(value = "实际到货数量") + private Long quantityReal; + + /** + * 已入库数量 + */ + @ExcelProperty(value = "已入库数量") + private Long quantityEntry; + + /** + * 已发货数量 + */ + private Long quantityShipped; + + /** + * 剩余数量 + */ + private Long quantityLeft; + + + private BizPurchaseOrder order; + + private BizPurchaseOrderItem item; + + + private List forwards; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPackingSpecsVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPackingSpecsVo.java new file mode 100644 index 0000000..33af8a9 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPackingSpecsVo.java @@ -0,0 +1,94 @@ +package org.asinkj.amz.domain.vo; + +import org.asinkj.amz.domain.BizPackingSpecs; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.asinkj.common.excel.annotation.ExcelDictFormat; +import org.asinkj.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 产品装箱规格视图对象 biz_packing_specs + * + * @author shuo hu + * @date 2025-07-17 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BizPackingSpecs.class) +public class BizPackingSpecsVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 规格ID(主键) + */ + @ExcelProperty(value = "规格ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "主=键") + private Long id; + + /** + * 关联采购单明细项ID + */ + @ExcelProperty(value = "关联采购单明细项ID") + private Long sendOrderId; + + /** + * 规格名称(如规格A) + */ + @ExcelProperty(value = "规格名称", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "如=规格A") + private String specName; + + /** + * 箱数(单位:箱) + */ + @ExcelProperty(value = "箱数", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位:箱") + private Long cartonCount; + + /** + * 每箱件数(单位:件) + */ + @ExcelProperty(value = "每箱件数", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位:件") + private Long piecesPerCarton; + + /** + * 箱子长度(单位:厘米) + */ + @ExcelProperty(value = "箱子长度", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位:厘米") + private Long length; + + /** + * 箱子宽度(单位:厘米) + */ + @ExcelProperty(value = "箱子宽度", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位:厘米") + private Long width; + + /** + * 箱子高度(单位:厘米) + */ + @ExcelProperty(value = "箱子高度", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位:厘米") + private Long height; + + /** + * 单箱重量(单位:千克) + */ + @ExcelProperty(value = "单箱重量", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "单=位:千克") + private Long weight; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOrderItemVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOrderItemVo.java index 0ea64a5..129553c 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOrderItemVo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOrderItemVo.java @@ -1,10 +1,13 @@ package org.asinkj.amz.domain.vo; import java.util.Date; + +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import org.asinkj.amz.domain.BizPurchaseOrderItem; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import org.asinkj.amz.domain.SysStatusHistory; import org.asinkj.common.excel.annotation.ExcelDictFormat; import org.asinkj.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; @@ -13,7 +16,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; import java.util.Date; - +import java.util.List; /** @@ -212,4 +215,19 @@ public class BizPurchaseOrderItemVo implements Serializable { @ExcelDictFormat(dictType = "vendor_order_status") private String orderStatus; + + private Long quantityLeft; + + private Long quantityShipped; + + + @TableField(exist = false) + private List sysStatusHistories; + + @TableField(exist = false) + private String hasForward = "N"; + + @TableField(exist = false) + private String hasSendOrder = "N"; + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOrderVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOrderVo.java index e63876e..a104802 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOrderVo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOrderVo.java @@ -2,6 +2,7 @@ package org.asinkj.amz.domain.vo; import java.math.BigDecimal; import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; import org.asinkj.amz.domain.BizPurchaseOrder; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; @@ -349,14 +350,12 @@ public class BizPurchaseOrderVo implements Serializable { private BigDecimal remainingQuantity; + private String type; - - private List items; + private List items; private List forwardList; - - } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOutOrderVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOutOrderVo.java new file mode 100644 index 0000000..db3cd6b --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizPurchaseOutOrderVo.java @@ -0,0 +1,145 @@ +package org.asinkj.amz.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.asinkj.amz.domain.BizOrderOutItem; +import org.asinkj.amz.domain.BizPurchaseOutOrder; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.asinkj.common.excel.annotation.ExcelDictFormat; +import org.asinkj.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 组合订单视图对象 biz_purchase_out_order + * + * @author shuo hu + * @date 2025-07-22 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BizPurchaseOutOrder.class) +public class BizPurchaseOutOrderVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 订单唯一编号 + */ + @ExcelProperty(value = "订单唯一编号") + private String orderSn; + + /** + * 仓库名称 + */ + @ExcelProperty(value = "仓库名称") + private String warehouseName; + + /** + * 外包仓库名称 + */ + @ExcelProperty(value = "外包仓库名称") + private String outsourceWarehouseName; + + /** + * 供应商名称 + */ + @ExcelProperty(value = "供应商名称") + private String supplierName; + + /** + * 业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss) + */ + @ExcelProperty(value = "业务创建时间 (Jackson格式: yyyy-MM-dd HH:mm:ss)") + private Date bizCreateTime; + + /** + * 状态文本描述 + */ + @ExcelProperty(value = "状态文本描述") + private String statusText; + + /** + * 创建人姓名 + */ + @ExcelProperty(value = "创建人姓名") + private String createRealname; + + /** + * PTP流水号 + */ + @ExcelProperty(value = "PTP流水号") + private String ptpSn; + + /** + * 产品名称 + */ + @ExcelProperty(value = "产品名称") + private String productName; + + /** + * 标准SKU编码 + */ + @ExcelProperty(value = "标准SKU编码") + private String sku; + + /** + * FNSKU编码 + */ + @ExcelProperty(value = "FNSKU编码") + private String fnsku; + + /** + * 外包数量 + */ + @ExcelProperty(value = "外包数量") + private Long outsourceQuantity; + + @ExcelProperty(value = "已下单数量") + private Long quantityShipped; + + @ExcelProperty(value = "剩余数量") + private Long quantityLeft; + + /** + * 实收数量 + */ + @ExcelProperty(value = "实收数量") + private Long receiveQuantity; + + /** + * 预计到达时间 + */ + @ExcelProperty(value = "预计到达时间") + private String expectArriveTime; + + /** + * MSKU编码列表 (数组存储) + */ + @ExcelProperty(value = "MSKU编码列表 (数组存储)") + private String msku; + + /** + * 关联计划单号列表 (数组存储) + */ + @ExcelProperty(value = "关联计划单号列表 (数组存储)") + private String planSn; + + /** + * 销售商名称 + */ + @ExcelProperty(value = "销售商名称") + private String sellerName; + + private List items; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderItemVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderItemVo.java new file mode 100644 index 0000000..c33bb70 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderItemVo.java @@ -0,0 +1,73 @@ +package org.asinkj.amz.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.asinkj.amz.domain.BizSendOrderItem; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.asinkj.common.excel.annotation.ExcelDictFormat; +import org.asinkj.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 供应商创建的发货单明细视图对象 biz_send_order_item + * + * @author shuo hu + * @date 2025-07-24 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BizSendOrderItem.class) +public class BizSendOrderItemVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 采购单号 + */ + @ExcelProperty(value = "采购单号") + private String orderSn; + + /** + * 发货日期 + */ + @ExcelProperty(value = "发货日期") + private Date sendDate; + + /** + * 发货日期 + */ + @ExcelProperty(value = "发货日期") + private String storeName; + + /** + * 发货日期 + */ + @ExcelProperty(value = "发货日期") + private String productName; + + /** + * 发货日期 + */ + @ExcelProperty(value = "发货日期") + private Long quantitySend; + + + private String sku; + + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderVo.java index c733cbc..399f3ee 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderVo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizSendOrderVo.java @@ -6,6 +6,7 @@ import org.asinkj.amz.domain.BizLogisticsOrder; import org.asinkj.amz.domain.BizSendOrder; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import org.asinkj.amz.domain.BizSendOrderItem; import org.asinkj.amz.domain.BizShipmentPlan; import org.asinkj.common.excel.annotation.ExcelDictFormat; import org.asinkj.common.excel.convert.ExcelDictConvert; @@ -130,4 +131,11 @@ public class BizSendOrderVo implements Serializable { private List bizShipmentPlans; + private List items; + + private String type; + + private String createName; + + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipmentPlanVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipmentPlanVo.java index 41f643a..14d16c7 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipmentPlanVo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipmentPlanVo.java @@ -201,6 +201,9 @@ public class BizShipmentPlanVo implements Serializable { // @ExcelDictFormat(readConverterExp = "系=统中的申报量") private Long setTotal; + + private Long itemCount; + /** * 渠道ID */ diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/dubbo/RemoteFBADataServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/dubbo/RemoteFBADataServiceImpl.java index 2f6329c..8d64cf5 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/dubbo/RemoteFBADataServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/dubbo/RemoteFBADataServiceImpl.java @@ -26,6 +26,8 @@ import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; +import static java.lang.Thread.sleep; + @RequiredArgsConstructor @Service @DubboService @@ -77,6 +79,14 @@ public class RemoteFBADataServiceImpl implements RemoteFBADataService { } }); + + sleep(100000); + sysAmazonStoreService.pullPurchaseOutOrderData(startDate, endDate, new LingxinCallback() { + @Override + public void onFinished(String result, int status) { + + } + }); } @Override diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizOrderOutItemMapper.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizOrderOutItemMapper.java new file mode 100644 index 0000000..8ba3205 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizOrderOutItemMapper.java @@ -0,0 +1,16 @@ +package org.asinkj.amz.mapper; + +import org.asinkj.amz.domain.BizOrderOutItem; +import org.asinkj.amz.domain.vo.BizOrderOutItemVo; +import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Mapper; +/** + * 采购订单明细Mapper接口 + * + * @author shuo hu + * @date 2025-07-22 + */ +@Mapper +public interface BizOrderOutItemMapper extends BaseMapperPlus { + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizPackingSpecsMapper.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizPackingSpecsMapper.java new file mode 100644 index 0000000..0e2f853 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizPackingSpecsMapper.java @@ -0,0 +1,16 @@ +package org.asinkj.amz.mapper; + +import org.asinkj.amz.domain.BizPackingSpecs; +import org.asinkj.amz.domain.vo.BizPackingSpecsVo; +import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Mapper; +/** + * 产品装箱规格Mapper接口 + * + * @author shuo hu + * @date 2025-07-17 + */ +@Mapper +public interface BizPackingSpecsMapper extends BaseMapperPlus { + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizPurchaseOutOrderMapper.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizPurchaseOutOrderMapper.java new file mode 100644 index 0000000..6d172af --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizPurchaseOutOrderMapper.java @@ -0,0 +1,16 @@ +package org.asinkj.amz.mapper; + +import org.asinkj.amz.domain.BizPurchaseOutOrder; +import org.asinkj.amz.domain.vo.BizPurchaseOutOrderVo; +import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Mapper; +/** + * 组合订单Mapper接口 + * + * @author shuo hu + * @date 2025-07-22 + */ +@Mapper +public interface BizPurchaseOutOrderMapper extends BaseMapperPlus { + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendOrderItemMapper.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendOrderItemMapper.java new file mode 100644 index 0000000..0f4d729 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizSendOrderItemMapper.java @@ -0,0 +1,16 @@ +package org.asinkj.amz.mapper; + +import org.asinkj.amz.domain.BizSendOrderItem; +import org.asinkj.amz.domain.vo.BizSendOrderItemVo; +import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Mapper; +/** + * 供应商创建的发货单明细Mapper接口 + * + * @author shuo hu + * @date 2025-07-24 + */ +@Mapper +public interface BizSendOrderItemMapper extends BaseMapperPlus { + +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizOrderOutItemService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizOrderOutItemService.java new file mode 100644 index 0000000..cf31e83 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizOrderOutItemService.java @@ -0,0 +1,69 @@ +package org.asinkj.amz.service; + +import org.asinkj.amz.domain.BizOrderOutItem; +import org.asinkj.amz.domain.vo.BizOrderOutItemVo; +import org.asinkj.amz.domain.bo.BizOrderOutItemBo; +import org.asinkj.common.mybatis.core.page.TableDataInfo; +import org.asinkj.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 采购订单明细Service接口 + * + * @author shuo hu + * @date 2025-07-22 + */ +public interface IBizOrderOutItemService { + + /** + * 查询采购订单明细 + * + * @param tenantId 主键 + * @return 采购订单明细 + */ + BizOrderOutItemVo queryById(String tenantId); + + /** + * 分页查询采购订单明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 采购订单明细分页列表 + */ + TableDataInfo queryPageList(BizOrderOutItemBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的采购订单明细列表 + * + * @param bo 查询条件 + * @return 采购订单明细列表 + */ + List queryList(BizOrderOutItemBo bo); + + /** + * 新增采购订单明细 + * + * @param bo 采购订单明细 + * @return 是否新增成功 + */ + Boolean insertByBo(BizOrderOutItemBo bo); + + /** + * 修改采购订单明细 + * + * @param bo 采购订单明细 + * @return 是否修改成功 + */ + Boolean updateByBo(BizOrderOutItemBo bo); + + /** + * 校验并批量删除采购订单明细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPackingSpecsService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPackingSpecsService.java new file mode 100644 index 0000000..0a8fcd9 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPackingSpecsService.java @@ -0,0 +1,69 @@ +package org.asinkj.amz.service; + +import org.asinkj.amz.domain.BizPackingSpecs; +import org.asinkj.amz.domain.vo.BizPackingSpecsVo; +import org.asinkj.amz.domain.bo.BizPackingSpecsBo; +import org.asinkj.common.mybatis.core.page.TableDataInfo; +import org.asinkj.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 产品装箱规格Service接口 + * + * @author shuo hu + * @date 2025-07-17 + */ +public interface IBizPackingSpecsService { + + /** + * 查询产品装箱规格 + * + * @param id 主键 + * @return 产品装箱规格 + */ + BizPackingSpecsVo queryById(Long id); + + /** + * 分页查询产品装箱规格列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 产品装箱规格分页列表 + */ + TableDataInfo queryPageList(BizPackingSpecsBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的产品装箱规格列表 + * + * @param bo 查询条件 + * @return 产品装箱规格列表 + */ + List queryList(BizPackingSpecsBo bo); + + /** + * 新增产品装箱规格 + * + * @param bo 产品装箱规格 + * @return 是否新增成功 + */ + Boolean insertByBo(BizPackingSpecsBo bo); + + /** + * 修改产品装箱规格 + * + * @param bo 产品装箱规格 + * @return 是否修改成功 + */ + Boolean updateByBo(BizPackingSpecsBo bo); + + /** + * 校验并批量删除产品装箱规格信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPurchaseOutOrderService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPurchaseOutOrderService.java new file mode 100644 index 0000000..bab59b5 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPurchaseOutOrderService.java @@ -0,0 +1,71 @@ +package org.asinkj.amz.service; + +import org.asinkj.amz.domain.BizPurchaseOutOrder; +import org.asinkj.amz.domain.vo.BizPurchaseOutOrderVo; +import org.asinkj.amz.domain.bo.BizPurchaseOutOrderBo; +import org.asinkj.common.mybatis.core.page.TableDataInfo; +import org.asinkj.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 组合订单Service接口 + * + * @author shuo hu + * @date 2025-07-22 + */ +public interface IBizPurchaseOutOrderService { + + /** + * 查询组合订单 + * + * @param tenantId 主键 + * @return 组合订单 + */ + BizPurchaseOutOrderVo queryByPurchaseId(String tenantId); + + /** + * 分页查询组合订单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 组合订单分页列表 + */ + TableDataInfo queryPageList(BizPurchaseOutOrderBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的组合订单列表 + * + * @param bo 查询条件 + * @return 组合订单列表 + */ + List queryList(BizPurchaseOutOrderBo bo); + + /** + * 新增组合订单 + * + * @param bo 组合订单 + * @return 是否新增成功 + */ + Boolean insertByBo(BizPurchaseOutOrderBo bo); + + /** + * 修改组合订单 + * + * @param bo 组合订单 + * @return 是否修改成功 + */ + Boolean updateByBo(BizPurchaseOutOrderBo bo); + + /** + * 校验并批量删除组合订单信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + int createSendOrderByBo(BizPurchaseOutOrderBo bo); +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendOrderItemService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendOrderItemService.java new file mode 100644 index 0000000..adf03af --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendOrderItemService.java @@ -0,0 +1,69 @@ +package org.asinkj.amz.service; + +import org.asinkj.amz.domain.BizSendOrderItem; +import org.asinkj.amz.domain.vo.BizSendOrderItemVo; +import org.asinkj.amz.domain.bo.BizSendOrderItemBo; +import org.asinkj.common.mybatis.core.page.TableDataInfo; +import org.asinkj.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 供应商创建的发货单明细Service接口 + * + * @author shuo hu + * @date 2025-07-24 + */ +public interface IBizSendOrderItemService { + + /** + * 查询供应商创建的发货单明细 + * + * @param id 主键 + * @return 供应商创建的发货单明细 + */ + BizSendOrderItemVo queryById(Long id); + + /** + * 分页查询供应商创建的发货单明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 供应商创建的发货单明细分页列表 + */ + TableDataInfo queryPageList(BizSendOrderItemBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的供应商创建的发货单明细列表 + * + * @param bo 查询条件 + * @return 供应商创建的发货单明细列表 + */ + List queryList(BizSendOrderItemBo bo); + + /** + * 新增供应商创建的发货单明细 + * + * @param bo 供应商创建的发货单明细 + * @return 是否新增成功 + */ + Boolean insertByBo(BizSendOrderItemBo bo); + + /** + * 修改供应商创建的发货单明细 + * + * @param bo 供应商创建的发货单明细 + * @return 是否修改成功 + */ + Boolean updateByBo(BizSendOrderItemBo bo); + + /** + * 校验并批量删除供应商创建的发货单明细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendOrderService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendOrderService.java index b067e4d..313a284 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendOrderService.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizSendOrderService.java @@ -73,4 +73,6 @@ public interface IBizSendOrderService { void linkByBo(BizSendOrderBo bo); void updateStatus(Long sendOrderId, String completed,String shipmentId); + + int updateDataByBo(BizSendOrderBo bo); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/ISysAmazonStoreService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/ISysAmazonStoreService.java index 85de7ca..3c22771 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/ISysAmazonStoreService.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/ISysAmazonStoreService.java @@ -78,6 +78,8 @@ public interface ISysAmazonStoreService { void updateAmzFBAData(LingxinCallback lingxinCallback) throws Exception; + void pullPurchaseOutOrderData(String startDate, String endDate, LingxinCallback lingxinCallback); + void pullPurchaseOrderData(String startDate, String endDate, LingxinCallback lingxinCallback); void updatePurchaseOrderSeller(String startDate, String endDate, LingxinCallback lingxinCallback); diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizOrderOutItemServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizOrderOutItemServiceImpl.java new file mode 100644 index 0000000..63642a5 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizOrderOutItemServiceImpl.java @@ -0,0 +1,140 @@ +package org.asinkj.amz.service.impl; + +import org.asinkj.common.core.utils.MapstructUtils; +import org.asinkj.common.core.utils.StringUtils; +import org.asinkj.common.mybatis.core.page.TableDataInfo; +import org.asinkj.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.asinkj.amz.domain.bo.BizOrderOutItemBo; +import org.asinkj.amz.domain.vo.BizOrderOutItemVo; +import org.asinkj.amz.domain.BizOrderOutItem; +import org.asinkj.amz.mapper.BizOrderOutItemMapper; +import org.asinkj.amz.service.IBizOrderOutItemService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 采购订单明细Service业务层处理 + * + * @author shuo hu + * @date 2025-07-22 + */ +@RequiredArgsConstructor +@Service +public class BizOrderOutItemServiceImpl implements IBizOrderOutItemService { + + private final BizOrderOutItemMapper baseMapper; + + /** + * 查询采购订单明细 + * + * @param tenantId 主键 + * @return 采购订单明细 + */ + @Override + public BizOrderOutItemVo queryById(String tenantId){ + return baseMapper.selectVoById(tenantId); + } + + /** + * 分页查询采购订单明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 采购订单明细分页列表 + */ + @Override + public TableDataInfo queryPageList(BizOrderOutItemBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的采购订单明细列表 + * + * @param bo 查询条件 + * @return 采购订单明细列表 + */ + @Override + public List queryList(BizOrderOutItemBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(BizOrderOutItemBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getItemId() != null, BizOrderOutItem::getItemId, bo.getItemId()); + lqw.eq(StringUtils.isNotBlank(bo.getOutOrderSn()), BizOrderOutItem::getOutOrderSn, bo.getOutOrderSn()); + lqw.like(StringUtils.isNotBlank(bo.getProductName()), BizOrderOutItem::getProductName, bo.getProductName()); + lqw.eq(StringUtils.isNotBlank(bo.getSku()), BizOrderOutItem::getSku, bo.getSku()); + lqw.eq(bo.getQuantityRequire() != null, BizOrderOutItem::getQuantityRequire, bo.getQuantityRequire()); + lqw.eq(bo.getBizCreateTime() != null, BizOrderOutItem::getBizCreateTime, bo.getBizCreateTime()); + lqw.like(StringUtils.isNotBlank(bo.getCreateRealname()), BizOrderOutItem::getCreateRealname, bo.getCreateRealname()); + lqw.eq(StringUtils.isNotBlank(bo.getExpectArriveTime()), BizOrderOutItem::getExpectArriveTime, bo.getExpectArriveTime()); + lqw.like(StringUtils.isNotBlank(bo.getWarehouseName()), BizOrderOutItem::getWarehouseName, bo.getWarehouseName()); + lqw.like(StringUtils.isNotBlank(bo.getSupplierName()), BizOrderOutItem::getSupplierName, bo.getSupplierName()); + lqw.eq(bo.getQuantityReal() != null, BizOrderOutItem::getQuantityReal, bo.getQuantityReal()); + lqw.eq(bo.getQuantityEntry() != null, BizOrderOutItem::getQuantityEntry, bo.getQuantityEntry()); + return lqw; + } + + /** + * 新增采购订单明细 + * + * @param bo 采购订单明细 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(BizOrderOutItemBo bo) { + BizOrderOutItem add = MapstructUtils.convert(bo, BizOrderOutItem.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; +// if (flag) { +// bo.setTenantId(add.getTenantId()); +// } + return flag; + } + + /** + * 修改采购订单明细 + * + * @param bo 采购订单明细 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BizOrderOutItemBo bo) { + BizOrderOutItem update = MapstructUtils.convert(bo, BizOrderOutItem.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BizOrderOutItem entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除采购订单明细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPackingSpecsServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPackingSpecsServiceImpl.java new file mode 100644 index 0000000..62c00fe --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPackingSpecsServiceImpl.java @@ -0,0 +1,136 @@ +package org.asinkj.amz.service.impl; + +import org.asinkj.common.core.utils.MapstructUtils; +import org.asinkj.common.core.utils.StringUtils; +import org.asinkj.common.mybatis.core.page.TableDataInfo; +import org.asinkj.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.asinkj.amz.domain.bo.BizPackingSpecsBo; +import org.asinkj.amz.domain.vo.BizPackingSpecsVo; +import org.asinkj.amz.domain.BizPackingSpecs; +import org.asinkj.amz.mapper.BizPackingSpecsMapper; +import org.asinkj.amz.service.IBizPackingSpecsService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 产品装箱规格Service业务层处理 + * + * @author shuo hu + * @date 2025-07-17 + */ +@RequiredArgsConstructor +@Service +public class BizPackingSpecsServiceImpl implements IBizPackingSpecsService { + + private final BizPackingSpecsMapper baseMapper; + + /** + * 查询产品装箱规格 + * + * @param id 主键 + * @return 产品装箱规格 + */ + @Override + public BizPackingSpecsVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询产品装箱规格列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 产品装箱规格分页列表 + */ + @Override + public TableDataInfo queryPageList(BizPackingSpecsBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的产品装箱规格列表 + * + * @param bo 查询条件 + * @return 产品装箱规格列表 + */ + @Override + public List queryList(BizPackingSpecsBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(BizPackingSpecsBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getSendOrderId() != null, BizPackingSpecs::getSendOrderId, bo.getSendOrderId()); + lqw.like(StringUtils.isNotBlank(bo.getSpecName()), BizPackingSpecs::getSpecName, bo.getSpecName()); + lqw.eq(bo.getCartonCount() != null, BizPackingSpecs::getCartonCount, bo.getCartonCount()); + lqw.eq(bo.getPiecesPerCarton() != null, BizPackingSpecs::getPiecesPerCarton, bo.getPiecesPerCarton()); + lqw.eq(bo.getLength() != null, BizPackingSpecs::getLength, bo.getLength()); + lqw.eq(bo.getWidth() != null, BizPackingSpecs::getWidth, bo.getWidth()); + lqw.eq(bo.getHeight() != null, BizPackingSpecs::getHeight, bo.getHeight()); + lqw.eq(bo.getWeight() != null, BizPackingSpecs::getWeight, bo.getWeight()); + return lqw; + } + + /** + * 新增产品装箱规格 + * + * @param bo 产品装箱规格 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(BizPackingSpecsBo bo) { + BizPackingSpecs add = MapstructUtils.convert(bo, BizPackingSpecs.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改产品装箱规格 + * + * @param bo 产品装箱规格 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BizPackingSpecsBo bo) { + BizPackingSpecs update = MapstructUtils.convert(bo, BizPackingSpecs.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BizPackingSpecs entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除产品装箱规格信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPurchaseOrderServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPurchaseOrderServiceImpl.java index 5457f25..22e3673 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPurchaseOrderServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPurchaseOrderServiceImpl.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.asinkj.amz.api.RemoteFBADataService; import org.asinkj.amz.domain.*; +import org.asinkj.amz.domain.vo.BizPurchaseOrderItemVo; import org.asinkj.amz.mapper.*; import org.asinkj.amz.service.IBizPurchaseOrderItemService; import org.asinkj.common.core.utils.MapstructUtils; @@ -67,6 +68,10 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService { private RemoteFBADataService remoteFBADataService; + @Resource + private BizSendOrderItemMapper bizSendOrderItemMapper; + + /** * 查询采购单主 * @@ -90,8 +95,11 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); List records = result.getRecords(); + + if (result.getTotal() == 0) { + return TableDataInfo.build(result); + } Set orderSnSet = records.stream().map(BizPurchaseOrderVo::getOrderSn).collect(Collectors.toSet()); - Set orderIds = records.stream().map(BizPurchaseOrderVo::getId).collect(Collectors.toSet()); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.in(CollectionUtil.isNotEmpty(orderSnSet), BizPurchaseOrderItem::getOrderSn, orderSnSet); @@ -126,12 +134,27 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService { historyLambdaQueryWrapper.in(CollectionUtil.isNotEmpty(itemIds), SysStatusHistory::getRecordId, itemIds); Map> sysStatusHistoryMap = sysStatusHistoryMapper.selectList(historyLambdaQueryWrapper).stream().collect(Collectors.groupingBy(SysStatusHistory::getRecordId)); + +// bizOrderOutItemMapper.selectList(); + LambdaQueryWrapper sendOrderItemWrapper = new LambdaQueryWrapper<>(); + sendOrderItemWrapper.in(BizSendOrderItem::getOrderSn, orderSnSet); + List bizSendOrderItems = bizSendOrderItemMapper.selectList(sendOrderItemWrapper); + Map collect2 = bizSendOrderItems.stream() + .collect(Collectors.groupingBy( + // 使用分隔符"_"拼接orderId和sku作为分组键 + item -> item.getOrderSn() + "_" + item.getSku(), + + // 对每个分组计算quality的总和 + Collectors.reducing(0L, BizSendOrderItem::getQuantitySend, Long::sum) + )); + for (BizPurchaseOrderVo record : records) { List bizPurchaseOrderItems = itemMaps.get(record.getOrderSn()); if (CollectionUtil.isNotEmpty(bizPurchaseOrderItems)) { + List convert = MapstructUtils.convert(bizPurchaseOrderItems, BizPurchaseOrderItemVo.class); Map> finalBizSendOrderItemMap = BizSendOrderItemMap; Map> finalBizShipForwardItemMap = bizShipForwardItemMap; - bizPurchaseOrderItems.forEach(item -> { + convert.forEach(item -> { item.setSysStatusHistories(sysStatusHistoryMap.get(item.getId())); List bizShipForwards = finalBizShipForwardItemMap.get(item.getId()); List bizSendOrders = finalBizSendOrderItemMap.get(item.getId()); @@ -141,8 +164,11 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService { if (CollectionUtil.isNotEmpty(bizSendOrders)) { item.setHasSendOrder("Y"); } + Long l = collect2.get(item.getOrderSn() + "_" + item.getSku()); + item.setQuantityShipped(l); + item.setQuantityLeft(item.getQuantityReal() - Optional.ofNullable(item.getQuantityShipped()).orElse(0L)); }); - record.setItems(bizPurchaseOrderItems); + record.setItems(convert); } List bizShipForwards = bizShipForwardMap.get(record.getOrderSn()); if (CollectionUtil.isNotEmpty(bizShipForwards)) { @@ -240,7 +266,7 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService { } if (!LoginHelper.isSuperAdmin()) { - lqw.in(BizPurchaseOrder::getStatus, 2, 9); + lqw.in(BizPurchaseOrder::getStatus, 1, 2, 9); } if (StrUtil.isNotBlank(bo.getSku())) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -265,6 +291,7 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService { BizPurchaseOrder add = MapstructUtils.convert(bo, BizPurchaseOrder.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; + if (flag) { bo.setOrderSn(add.getOrderSn()); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPurchaseOutOrderServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPurchaseOutOrderServiceImpl.java new file mode 100644 index 0000000..cd08b30 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizPurchaseOutOrderServiceImpl.java @@ -0,0 +1,311 @@ +package org.asinkj.amz.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import org.asinkj.amz.domain.*; +import org.asinkj.amz.domain.vo.BizOrderOutItemVo; +import org.asinkj.amz.mapper.*; +import org.asinkj.common.core.utils.MapstructUtils; +import org.asinkj.common.core.utils.StringUtils; +import org.asinkj.common.mybatis.core.page.TableDataInfo; +import org.asinkj.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.asinkj.common.satoken.utils.LoginHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.asinkj.amz.domain.bo.BizPurchaseOutOrderBo; +import org.asinkj.amz.domain.vo.BizPurchaseOutOrderVo; +import org.asinkj.amz.service.IBizPurchaseOutOrderService; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 组合订单Service业务层处理 + * + * @author shuo hu + * @date 2025-07-22 + */ +@RequiredArgsConstructor +@Service +public class BizPurchaseOutOrderServiceImpl implements IBizPurchaseOutOrderService { + + private static final Logger log = LoggerFactory.getLogger(BizPurchaseOutOrderServiceImpl.class); + private final BizPurchaseOutOrderMapper baseMapper; + + @Resource + private BizOrderOutItemMapper bizOrderOutItemMapper; + + @Resource + private BizPurchaseOrderMapper bizPurchaseOrderMapper; + @Resource + private BizPurchaseOrderItemMapper bizPurchaseOrderItemMapper; + + @Resource + private BizSendOrderMapper bizSendOrderMapper; + + @Resource + private BizSendOrderItemMapper bizSendOrderItemMapper; + @Autowired + private BizPurchaseOutOrderMapper bizPurchaseOutOrderMapper; + + @Resource + private BizShipForwardMapper bizForwardMapper; + + @Resource + private SysUserMapper sysUserMapper; + + + /** + * 查询组合订单 + * + * @param tenantId 主键 + * @return 组合订单 + */ + @Override + public BizPurchaseOutOrderVo queryByPurchaseId(String tenantId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BizPurchaseOutOrder::getOrderSn, tenantId); + return baseMapper.selectVoOne(queryWrapper); + } + + /** + * 分页查询组合订单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 组合订单分页列表 + */ + @Override + public TableDataInfo queryPageList(BizPurchaseOutOrderBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + + List records = result.getRecords(); + if (result.getTotal() == 0) { + return TableDataInfo.build(result); + } + List collect = records.stream().map(BizPurchaseOutOrderVo::getOrderSn).collect(Collectors.toList()); + LambdaQueryWrapper objectLambdaQueryWrapper = new LambdaQueryWrapper<>(); + + objectLambdaQueryWrapper.in(CollectionUtil.isNotEmpty(collect), BizOrderOutItem::getOutOrderSn, collect); + List bizOrderOutItems = bizOrderOutItemMapper.selectList(objectLambdaQueryWrapper); + Set collect1 = bizOrderOutItems.stream().map(BizOrderOutItem::getPurchaseOrderSn).collect(Collectors.toSet()); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(BizPurchaseOrder::getOrderSn, collect1); + List bizPurchaseOrders = bizPurchaseOrderMapper.selectList(queryWrapper); + + + LambdaQueryWrapper queryItemWrapper = new LambdaQueryWrapper<>(); + queryItemWrapper.in(BizPurchaseOrderItem::getOrderSn, collect1); + List bizPurchaseOrderItems = bizPurchaseOrderItemMapper.selectList(queryItemWrapper); + Map itemsMap = bizPurchaseOrderItems.stream().collect(Collectors.toMap(c -> c.getOrderSn() + c.getSku(), Function.identity())); + Map purchaseOrderMap = bizPurchaseOrders.stream().collect(Collectors.toMap(BizPurchaseOrder::getOrderSn, Function.identity())); + + Map> itemMap = bizOrderOutItems.stream().collect(Collectors.groupingBy(BizOrderOutItem::getOutOrderSn)); +// bizOrderOutItemMapper.selectList(); + LambdaQueryWrapper sendOrderItemWrapper = new LambdaQueryWrapper<>(); + sendOrderItemWrapper.in(BizSendOrderItem::getOrderSn, collect1); + List bizSendOrderItems = bizSendOrderItemMapper.selectList(sendOrderItemWrapper); + + + LambdaQueryWrapper sendOrderWrapper = new LambdaQueryWrapper<>(); + sendOrderWrapper.in(BizSendOrder::getOrderSn, collect); + List bizSendOrders = bizSendOrderMapper.selectList(sendOrderWrapper); + Map collect3 = bizSendOrders.stream().collect(Collectors.groupingBy(BizSendOrder::getOrderSn, Collectors.reducing(0L, BizSendOrder::getQuantitySend, Long::sum))); + + LambdaQueryWrapper bizShipForwardWrapper = new LambdaQueryWrapper<>(); + bizShipForwardWrapper.in(CollectionUtil.isNotEmpty(collect1), BizShipForward::getOrderSn, collect1); + + List bizShipForwards1 = bizForwardMapper.selectList(bizShipForwardWrapper); + Map> bizShipForwardMap = new HashMap<>(); + + if (CollectionUtil.isNotEmpty(bizShipForwards1)) { + bizShipForwardMap = bizShipForwards1.stream().collect(Collectors.groupingBy(BizShipForward::getOrderSn)); + } + + Map collect2 = bizSendOrderItems.stream() + .collect(Collectors.groupingBy( + // 使用分隔符"_"拼接orderId和sku作为分组键 + item -> item.getOrderSn() + "_" + item.getSku(), + + // 对每个分组计算quality的总和 + Collectors.reducing(0L, BizSendOrderItem::getQuantitySend, Long::sum) + )); + for (BizPurchaseOutOrderVo record : records) { + List bizOrderOutItems1 = itemMap.get(record.getOrderSn()); + List convert = MapstructUtils.convert(bizOrderOutItems1, BizOrderOutItemVo.class); + record.setQuantityShipped(Optional.ofNullable(collect3.get(record.getOrderSn())).orElse(0L)); + record.setQuantityLeft(record.getOutsourceQuantity() - Optional.ofNullable(collect3.get(record.getOrderSn())).orElse(0L)); + for (BizOrderOutItemVo item : convert) { + BizPurchaseOrder bizPurchaseOrder = purchaseOrderMap.get(item.getPurchaseOrderSn()); + item.setOrder(bizPurchaseOrder); + + BizPurchaseOrderItem bizPurchaseOrderItem = itemsMap.get(item.getPurchaseOrderSn() + item.getSku()); + item.setItem(bizPurchaseOrderItem); + List bizShipForwards = bizShipForwardMap.get(item.getPurchaseOrderSn()); + if (CollectionUtil.isNotEmpty(bizShipForwards)) { + item.setForwards(bizShipForwards); + } + item.setQuantityShipped(Optional.ofNullable(collect2.get(item.getPurchaseOrderSn() + "_" + item.getSku())).orElse(0L)); + item.setQuantityLeft(item.getQuantityReal() - Optional.ofNullable(item.getQuantityShipped()).orElse(0L)); + BigDecimal ratio = new BigDecimal(item.getQuantityReal()).divide(new BigDecimal(record.getOutsourceQuantity()), 2, RoundingMode.HALF_UP); + item.setRatio(ratio); + } + record.setItems(convert); + } + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的组合订单列表 + * + * @param bo 查询条件 + * @return 组合订单列表 + */ + @Override + public List queryList(BizPurchaseOutOrderBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(BizPurchaseOutOrderBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getOrderSn()), BizPurchaseOutOrder::getOrderSn, bo.getOrderSn()); + lqw.like(StringUtils.isNotBlank(bo.getWarehouseName()), BizPurchaseOutOrder::getWarehouseName, bo.getWarehouseName()); + lqw.like(StringUtils.isNotBlank(bo.getOutsourceWarehouseName()), BizPurchaseOutOrder::getOutsourceWarehouseName, bo.getOutsourceWarehouseName()); + lqw.like(StringUtils.isNotBlank(bo.getSupplierName()), BizPurchaseOutOrder::getSupplierName, bo.getSupplierName()); + lqw.eq(bo.getBizCreateTime() != null, BizPurchaseOutOrder::getBizCreateTime, bo.getBizCreateTime()); + lqw.eq(StringUtils.isNotBlank(bo.getStatusText()), BizPurchaseOutOrder::getStatusText, bo.getStatusText()); + lqw.like(StringUtils.isNotBlank(bo.getCreateRealname()), BizPurchaseOutOrder::getCreateRealname, bo.getCreateRealname()); + lqw.eq(StringUtils.isNotBlank(bo.getPtpSn()), BizPurchaseOutOrder::getPtpSn, bo.getPtpSn()); + lqw.like(StringUtils.isNotBlank(bo.getProductName()), BizPurchaseOutOrder::getProductName, bo.getProductName()); + lqw.eq(StringUtils.isNotBlank(bo.getSku()), BizPurchaseOutOrder::getSku, bo.getSku()); + lqw.eq(StringUtils.isNotBlank(bo.getFnsku()), BizPurchaseOutOrder::getFnsku, bo.getFnsku()); + lqw.eq(bo.getOutsourceQuantity() != null, BizPurchaseOutOrder::getOutsourceQuantity, bo.getOutsourceQuantity()); + lqw.eq(bo.getReceiveQuantity() != null, BizPurchaseOutOrder::getReceiveQuantity, bo.getReceiveQuantity()); + lqw.eq(StringUtils.isNotBlank(bo.getExpectArriveTime()), BizPurchaseOutOrder::getExpectArriveTime, bo.getExpectArriveTime()); + lqw.eq(StringUtils.isNotBlank(bo.getMsku()), BizPurchaseOutOrder::getMsku, bo.getMsku()); + lqw.eq(StringUtils.isNotBlank(bo.getPlanSn()), BizPurchaseOutOrder::getPlanSn, bo.getPlanSn()); + lqw.like(StringUtils.isNotBlank(bo.getSellerName()), BizPurchaseOutOrder::getSellerName, bo.getSellerName()); + return lqw; + } + + /** + * 新增组合订单 + * + * @param bo 组合订单 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(BizPurchaseOutOrderBo bo) { + BizPurchaseOutOrder add = MapstructUtils.convert(bo, BizPurchaseOutOrder.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + + return flag; + } + + /** + * 修改组合订单 + * + * @param bo 组合订单 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BizPurchaseOutOrderBo bo) { + BizPurchaseOutOrder update = MapstructUtils.convert(bo, BizPurchaseOutOrder.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BizPurchaseOutOrder entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除组合订单信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + @Override + public int createSendOrderByBo(BizPurchaseOutOrderBo bo) { + log.info("开始创建发货订单{}", bo); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUser::getNickName, bo.getSupplierName()); + List sysUsers = sysUserMapper.selectList(queryWrapper); + if (CollectionUtil.isEmpty(sysUsers)) { + throw new RuntimeException("供应商不存在"); + } + SysUser sysUser = sysUsers.get(0); + + + BizSendOrder bizSendOrder = new BizSendOrder(); +// BizSendOrderItem bizSendOrderItem = new BizSendOrderItem(); + bizSendOrder.setOrderSn(bo.getOrderSn()); + bizSendOrder.setStoreName(bo.getSellerName()); + bizSendOrder.setProductName(bo.getProductName()); + bizSendOrder.setCreateName(LoginHelper.getLoginUser().getNickname()); + bizSendOrder.setQuantitySend(bo.getOutsourceQuantity()); + bizSendOrder.setSendName(bo.getSupplierName()); + + bizSendOrder.setSendId(sysUser.getUserId()); + bizSendOrder.setType("com"); +// LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(BizPurchaseOutOrder.class) +// .eq(BizPurchaseOutOrder::getOrderSn, bo.getOrderSn()) // 根据orderSn定位记录 +// .setSql("outsource_quantity = outsource_quantity - " + bo.getOutsourceQuantity()); // SQL表达式更新:减去x值 +// +// // 执行更新(返回受影响行数) +// int affectedRows = bizPurchaseOutOrderMapper.update(null, updateWrapper); + bizSendOrderMapper.insert(bizSendOrder); + List bizSendOrderItems = new ArrayList<>(); + + for (BizOrderOutItemVo item : bo.getItems()) { + BizSendOrderItem bizSendOrderItem = new BizSendOrderItem(); + bizSendOrderItem.setQuantitySend(item.getOrder().getQuantityReal()); + bizSendOrderItem.setOrderSn(item.getPurchaseOrderSn()); + bizSendOrderItem.setMainOrderSn(bizSendOrder.getId()); + bizSendOrderItem.setProductName(item.getProductName()); + bizSendOrderItem.setSku(item.getSku()); + + + bizSendOrderItems.add(bizSendOrderItem); + +// LambdaUpdateWrapper updateOrderWrapper = Wrappers.lambdaUpdate(BizPurchaseOrderItem.class) +// .eq(BizPurchaseOrderItem::getOrderSn, item.getPurchaseOrderSn()) // 根据orderSn定位记录 +// .eq(BizPurchaseOrderItem::getSku, item.getSku()) +// .setSql("quantity_real = quantity_real - " + item.getOrder().getQuantityReal()); // SQL表达式更新:减去x值 +// +// // 执行更新(返回受影响行数) +// bizPurchaseOrderItemMapper.update(null, updateOrderWrapper); + log.info("更新采购订单{}", item.getPurchaseOrderSn()); + } + bizSendOrderItemMapper.insertBatch(bizSendOrderItems); + return 0; + } +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderItemServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderItemServiceImpl.java new file mode 100644 index 0000000..2286ac1 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderItemServiceImpl.java @@ -0,0 +1,133 @@ +package org.asinkj.amz.service.impl; + +import org.asinkj.common.core.utils.MapstructUtils; +import org.asinkj.common.core.utils.StringUtils; +import org.asinkj.common.mybatis.core.page.TableDataInfo; +import org.asinkj.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.asinkj.amz.domain.bo.BizSendOrderItemBo; +import org.asinkj.amz.domain.vo.BizSendOrderItemVo; +import org.asinkj.amz.domain.BizSendOrderItem; +import org.asinkj.amz.mapper.BizSendOrderItemMapper; +import org.asinkj.amz.service.IBizSendOrderItemService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 供应商创建的发货单明细Service业务层处理 + * + * @author shuo hu + * @date 2025-07-24 + */ +@RequiredArgsConstructor +@Service +public class BizSendOrderItemServiceImpl implements IBizSendOrderItemService { + + private final BizSendOrderItemMapper baseMapper; + + /** + * 查询供应商创建的发货单明细 + * + * @param id 主键 + * @return 供应商创建的发货单明细 + */ + @Override + public BizSendOrderItemVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询供应商创建的发货单明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 供应商创建的发货单明细分页列表 + */ + @Override + public TableDataInfo queryPageList(BizSendOrderItemBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的供应商创建的发货单明细列表 + * + * @param bo 查询条件 + * @return 供应商创建的发货单明细列表 + */ + @Override + public List queryList(BizSendOrderItemBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(BizSendOrderItemBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getOrderSn()), BizSendOrderItem::getOrderSn, bo.getOrderSn()); + lqw.eq(bo.getSendDate() != null, BizSendOrderItem::getSendDate, bo.getSendDate()); + lqw.like(StringUtils.isNotBlank(bo.getStoreName()), BizSendOrderItem::getStoreName, bo.getStoreName()); + lqw.like(StringUtils.isNotBlank(bo.getProductName()), BizSendOrderItem::getProductName, bo.getProductName()); + lqw.eq(bo.getQuantitySend() != null, BizSendOrderItem::getQuantitySend, bo.getQuantitySend()); + return lqw; + } + + /** + * 新增供应商创建的发货单明细 + * + * @param bo 供应商创建的发货单明细 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(BizSendOrderItemBo bo) { + BizSendOrderItem add = MapstructUtils.convert(bo, BizSendOrderItem.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改供应商创建的发货单明细 + * + * @param bo 供应商创建的发货单明细 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(BizSendOrderItemBo bo) { + BizSendOrderItem update = MapstructUtils.convert(bo, BizSendOrderItem.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(BizSendOrderItem entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除供应商创建的发货单明细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderServiceImpl.java index ab2cc1c..087fff9 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizSendOrderServiceImpl.java @@ -6,11 +6,10 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.dubbo.config.annotation.DubboReference; import org.asinkj.amz.domain.*; +import org.asinkj.amz.domain.bo.BizPackingSpecsBo; import org.asinkj.amz.domain.bo.SysAmazonStoreBo; import org.asinkj.amz.domain.vo.SysAmazonStoreVo; -import org.asinkj.amz.mapper.BizLogisticsOrderDetailMapper; -import org.asinkj.amz.mapper.BizLogisticsOrderMapper; -import org.asinkj.amz.mapper.BizShipmentPlanMapper; +import org.asinkj.amz.mapper.*; import org.asinkj.amz.service.IBizShipmentPlanService; import org.asinkj.amz.service.ISysAmazonStoreService; import org.asinkj.common.core.utils.MapstructUtils; @@ -28,7 +27,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.asinkj.amz.domain.bo.BizSendOrderBo; import org.asinkj.amz.domain.vo.BizSendOrderVo; -import org.asinkj.amz.mapper.BizSendOrderMapper; import org.asinkj.amz.service.IBizSendOrderService; import javax.annotation.Resource; @@ -65,6 +63,9 @@ public class BizSendOrderServiceImpl implements IBizSendOrderService { @Resource private BizShipmentPlanMapper bizShipmentPlanMapper; + @Resource + private BizSendOrderItemMapper bizSendOrderItemMapper; + /** * 查询供应商创建的发货单 * @@ -99,7 +100,7 @@ public class BizSendOrderServiceImpl implements IBizSendOrderService { LambdaQueryWrapper orderDetailLambdaQueryWrapper = new LambdaQueryWrapper<>(); orderDetailLambdaQueryWrapper.in(CollectionUtil.isNotEmpty(collect), BizLogisticsOrderDetail::getOrderId, collect); List bizLogisticsOrderDetails = bizLogisticsOrderDetailMapper.selectList(orderDetailLambdaQueryWrapper); - Map> detailMap = bizLogisticsOrderDetails.stream().collect(Collectors.groupingBy(BizLogisticsOrderDetail::getOrderId)); + Map> detailMap = bizLogisticsOrderDetails.stream().collect(Collectors.groupingBy(BizLogisticsOrderDetail::getOrderId)); for (BizLogisticsOrder bizLogisticsOrder : bizLogisticsOrders) { bizLogisticsOrder.setDetails(detailMap.get(bizLogisticsOrder.getOrderId())); @@ -110,6 +111,15 @@ public class BizSendOrderServiceImpl implements IBizSendOrderService { Map> shipmentsByOrderIdsMap = getShipmentsByOrderIds(ids); List logicIds = records.stream().map(BizSendOrderVo::getLogisticsProviderId).distinct().toList(); Map remoteUserVoMap = remoteUserService.selectListByIds(logicIds).stream().collect(Collectors.toMap(RemoteUserVo::getUserId, Function.identity())); + Set recordIds = records.stream().map(BizSendOrderVo::getId).collect(Collectors.toSet()); + Map> sendOrderItemMap = new HashMap<>(); + if (CollectionUtil.isNotEmpty(recordIds)) { + LambdaQueryWrapper sendOrderItemWrapper = new LambdaQueryWrapper<>(); + sendOrderItemWrapper.in(BizSendOrderItem::getMainOrderSn, recordIds); + List bizSendOrderItems = bizSendOrderItemMapper.selectList(sendOrderItemWrapper); + + sendOrderItemMap = bizSendOrderItems.stream().collect(Collectors.groupingBy(BizSendOrderItem::getMainOrderSn)); + } for (BizSendOrderVo record : records) { RemoteUserVo remoteUserVo = remoteUserVoMap.get(record.getLogisticsProviderId()); if (remoteUserVo != null) { @@ -122,7 +132,13 @@ public class BizSendOrderServiceImpl implements IBizSendOrderService { List bizShipmentPlans = shipmentsByOrderIdsMap.get(record.getId()); record.setBizShipmentPlans(bizShipmentPlans); +// if (record.getType().equals("com")) { + List bizSendOrderItems1 = sendOrderItemMap.get(record.getId()); + record.setItems(bizSendOrderItems1); +// } } + + return TableDataInfo.build(result); } @@ -203,16 +219,50 @@ public class BizSendOrderServiceImpl implements IBizSendOrderService { * @param bo 供应商创建的发货单 * @return 是否新增成功 */ + + @Resource + private BizPackingSpecsMapper bizPackingSpecsMapper; + + @Resource + private SysUserMapper sysUserMapper; + @Override public Boolean insertByBo(BizSendOrderBo bo) { BizSendOrder add = MapstructUtils.convert(bo, BizSendOrder.class); validEntityBeforeSave(add); - add.setSendId(LoginHelper.getUserId()); - add.setSendName(LoginHelper.getLoginUser().getNickname()); + + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUser::getNickName, bo.getSendName()); + List sysUsers = sysUserMapper.selectList(queryWrapper); + if (CollectionUtil.isEmpty(sysUsers)) { + throw new RuntimeException("供应商不存在"); + } + SysUser sysUser = sysUsers.get(0); + + add.setSendId(sysUser.getUserId()); + add.setSendName(sysUser.getNickName()); + add.setCreateName(LoginHelper.getLoginUser().getNickname()); + boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); } + + BizSendOrderItem bizSendOrderItem = new BizSendOrderItem(); + bizSendOrderItem.setQuantitySend(bo.getQuantitySend()); + bizSendOrderItem.setOrderSn(bo.getOrderSn()); + bizSendOrderItem.setMainOrderSn(add.getId()); + bizSendOrderItem.setProductName(bo.getProductName()); + bizSendOrderItem.setSku(bo.getSku()); + bizSendOrderItemMapper.insert(bizSendOrderItem); +// List packingSpecsList = bo.getPackingSpecsList(); +// for (BizPackingSpecsBo bizPackingSpecsBo : packingSpecsList) { +// bizPackingSpecsBo.setSendOrderId(add.getId()); +// } +// List bizPackingSpecsList = MapstructUtils.convert(packingSpecsList, BizPackingSpecs.class); +// +// bizPackingSpecsMapper.insertBatch(bizPackingSpecsList); return flag; } @@ -272,4 +322,11 @@ public class BizSendOrderServiceImpl implements IBizSendOrderService { queryWrapper.eq(BizSendOrder::getId, sendOrderId).set(BizSendOrder::getSendStatus, completed).set(BizSendOrder::getShipmentId, shipmentId); baseMapper.update(queryWrapper); } + + @Override + public int updateDataByBo(BizSendOrderBo bo) { + BizSendOrder update = MapstructUtils.convert(bo, BizSendOrder.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update); + } } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipmentPlanServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipmentPlanServiceImpl.java index 2d91eb8..ba44ffe 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipmentPlanServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipmentPlanServiceImpl.java @@ -236,6 +236,7 @@ public class BizShipmentPlanServiceImpl implements IBizShipmentPlanService { lqw.eq(StringUtils.isNotBlank(bo.getShippingSolution()), BizShipmentPlan::getShippingSolution, bo.getShippingSolution()); lqw.eq(bo.getGmtModified() != null, BizShipmentPlan::getGmtModified, bo.getGmtModified()); // lqw.eq(bo.getGmtCreate() != null, BizShipmentPlan::getGmtCreate, bo.getGmtCreate()); + if (bo.getGmtCreate() != null) { lqw.ge(BizShipmentPlan::getGmtCreate, DateUtil.beginOfDay(bo.getGmtCreate())) .lt(BizShipmentPlan::getGmtCreate, DateUtil.endOfDay(bo.getGmtCreate())); @@ -261,11 +262,16 @@ public class BizShipmentPlanServiceImpl implements IBizShipmentPlanService { SysAmazonStoreBo sysAmazonStoreBo = new SysAmazonStoreBo(); sysAmazonStoreBo.setUserId(LoginHelper.getUserId()); - List sysAmazonStoreVos = iSysAmazonStoreService.queryList(sysAmazonStoreBo); - Set collect = sysAmazonStoreVos.stream().map(SysAmazonStoreVo::getSid).collect(Collectors.toSet()); - if (CollectionUtil.isNotEmpty(collect)) { - lqw.in(BizShipmentPlan::getSid, collect); + if (!LoginHelper.isSuperAdmin()) { + + List sysAmazonStoreVos = iSysAmazonStoreService.queryList(sysAmazonStoreBo); + Set collect = sysAmazonStoreVos.stream().map(SysAmazonStoreVo::getSid).collect(Collectors.toSet()); + if (CollectionUtil.isNotEmpty(collect)) { + lqw.in(BizShipmentPlan::getSid, collect); + } + } + return lqw; } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/SysAmazonStoreServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/SysAmazonStoreServiceImpl.java index 1ce718c..5d3d1aa 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/SysAmazonStoreServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/SysAmazonStoreServiceImpl.java @@ -10,7 +10,7 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.TypeReference; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import okhttp3.Call; @@ -87,6 +87,12 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService { @Resource private BizPurchaseOrderItemMapper bizPurchaseOrderItemMapper; + @Resource + private BizPurchaseOutOrderMapper bizPurchaseOutOrderMapper; + + @Resource + private BizOrderOutItemMapper bizOrderOutItemMapper; + @Value("${lingxing.appId}") private String appId; @@ -504,6 +510,113 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService { } + /** + * 查询采购订单 + * + * @param startDate + * @param endDate + * @param lingxinCallback + */ + @Override + public void pullPurchaseOutOrderData(String startDate, String endDate, LingxinCallback lingxinCallback) { + Map queryParam = new HashMap<>(); + queryParam.put("offset", 0); + queryParam.put("length", 500); + queryParam.put("search_field_time", "create_time"); + + queryParam.put("start_date", startDate); + queryParam.put("end_date", endDate); + + RequestAttributes ra = RequestContextHolder.getRequestAttributes(); + HttpUtil.postWithParams("/erp/sc/routing/purchase/purchaseOutsourceOrder/getOrders", queryParam, new Callback() { + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + + } + + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + RequestContextHolder.setRequestAttributes(ra); + + try { + + String string = response.body().string(); + log.info("onResponse+{}", string); + + JSONObject jsonObject = JSONObject.parse(string); + JSONObject data1 = jsonObject.getJSONObject("data"); + if (ObjectUtil.isEmpty(data1)) { + log.info("未获取到采购订单"); + return; + } + JSONArray data = data1.getJSONArray("list"); + if (ObjectUtil.isEmpty(data)) { + log.info("未获取到采购订单"); + return; + } + + List list = data.toList(PurchaseOutOrder.class); + log.info("purchaseOutOrder:{}", list); + + +// + List collect = list.stream().map(PurchaseOutOrder::getOrderSn).collect(Collectors.toList()); + // 删除collect 里面已经存在表里的数据 + List bizPurchaseOutOrders = bizPurchaseOutOrderMapper.selectList(new LambdaQueryWrapper().in(BizPurchaseOutOrder::getOrderSn, collect)); + if (CollectionUtil.isNotEmpty(bizPurchaseOutOrders)) { + List collect1 = bizPurchaseOutOrders.stream().map(BizPurchaseOutOrder::getOrderSn).collect(Collectors.toList()); + list.removeIf(PurchaseOutOrder -> collect1.contains(PurchaseOutOrder.getOrderSn())); + } + if (CollectionUtil.isEmpty(list)) { + log.info("未获取到新的组合采购订单"); + return; + } + + List insertList = MapstructUtils.convert(list, BizPurchaseOutOrder.class); + List bizOrderOutItems = new ArrayList<>(); + for (PurchaseOutOrder purchaseOutOrder : list) { + List items = MapstructUtils.convert(purchaseOutOrder.getItems(), BizOrderOutItem.class); + for (BizOrderOutItem bizOrderOutItem : items) { + bizOrderOutItem.setOutOrderSn(purchaseOutOrder.getOrderSn()); + bizOrderOutItem.setCreateBy(1L); + bizOrderOutItem.setCreateTime(new Date()); + bizOrderOutItem.setUpdateBy(1L); + bizOrderOutItem.setUpdateTime(new Date()); + } + + bizOrderOutItems.addAll(items); + } + if (CollectionUtil.isNotEmpty(insertList)) { + for (BizPurchaseOutOrder bizPurchaseOutOrder : insertList) { + bizPurchaseOutOrder.setCreateBy(1L); + bizPurchaseOutOrder.setCreateTime(new Date()); + bizPurchaseOutOrder.setUpdateBy(1L); + bizPurchaseOutOrder.setUpdateTime(new Date()); + } + bizPurchaseOutOrderMapper.insertBatch(insertList); + } + + if (CollectionUtil.isNotEmpty(bizOrderOutItems)) { + bizOrderOutItemMapper.insertBatch(bizOrderOutItems); + Set purchaseOrders = bizOrderOutItems.stream().map(BizOrderOutItem::getPurchaseOrderSn).collect(Collectors.toSet()); + LambdaUpdateWrapper bizPurchaseOrderLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + bizPurchaseOrderLambdaUpdateWrapper.in(BizPurchaseOrder::getOrderSn, purchaseOrders); + bizPurchaseOrderLambdaUpdateWrapper.set(BizPurchaseOrder::getType,"com"); + bizPurchaseOrderMapper.update(null, bizPurchaseOrderLambdaUpdateWrapper); + } + +// bizPurchaseOutOrderMapper.insertBatch( convert); + + + } catch (Exception ex) { + log.info("错误{}", ex); + } + } + + }); + } + + /** * 查询采购订单 * @@ -745,8 +858,22 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService { queryParam.put("dateBegin", startDate); queryParam.put("dateEnd", endDate); // queryParam.put("sids", JSON.toJSON(List.of(112))); - queryParam.put("shipmentIdList", JSON.toJSON(List.of("FBA18Y3QBXGJ"))); - queryParam.put("dateType", 2); +// queryParam.put("shipmentIdList", JSON.toJSON(List.of("FBA18Z3J5FZH", +// "FBA18Z3J824M", +// "FBA18Z3JSFWM", +// "FBA18Z3JYPPQ", +// "FBA18Z3H6TCQ", +// "FBA18Z1TCH2X", +// "FBA18Z1V1725", +// "FBA18Z1SC376", +// "FBA18Z1T68LG", +// "FBA18Z1SJJ2F", +// "FBA18Z2N4LHF", +// "FBA18Z2MHHFL", +// "FBA18Z2M9HXM", +// "FBA18Z2MZ2S5", +// "FBA18Z2NTCK7"))); + queryParam.put("dateType", 1); HttpUtil.postWithParams("/amzStaServer/openapi/inbound-plan/page", queryParam, new Callback() { @Override @@ -933,6 +1060,7 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService { bizShipmentPlan.setShipmentName(shipment.getShipmentName()); bizShipmentPlan.setShipmentStatus(shipment.getStatus()); bizShipmentPlan.setDestination(shipment.getWarehouseId()); + bizShipmentPlan.setItemCount(Long.valueOf(shipment.getItemCount())); bizShipmentPlan.setStaShipmentDate(shipment.getShipingTime()); bizShipmentPlan.setSetTotal(Long.valueOf(shipment.getItemCount())); FbaShipmentApiResponse.Address shipFromAddress = new FbaShipmentApiResponse.Address(); diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/asinking/entity/OutOrderItem.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/asinking/entity/OutOrderItem.java new file mode 100644 index 0000000..902f39f --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/asinking/entity/OutOrderItem.java @@ -0,0 +1,51 @@ +package org.asinkj.asinking.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.AutoMapping; +import lombok.Data; +import org.asinkj.amz.domain.BizOrderOutItem; +import org.asinkj.amz.domain.BizPurchaseOutOrder; +import org.asinkj.amz.mapStruct.DateConvert; + +import java.util.Date; + +@Data +@AutoMapper(target = BizOrderOutItem.class, uses = DateConvert.class) +public class OutOrderItem { + @JsonProperty("purchase_order_sn") + private String purchaseOrderSn; + + @JsonProperty("product_name") + private String productName; + + @JsonProperty("sku") + private String sku; + + @JsonProperty("quantity_require") + private Integer quantityRequire; + + @JsonProperty("create_time") +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @AutoMapping(qualifiedByName = "stringToDate") + private String bizCreateTime; + + @JsonProperty("create_realname") + private String createRealname; + + @JsonProperty("expect_arrive_time") + private String expectArriveTime; + + @JsonProperty("warehouse_name") + private String warehouseName; + + @JsonProperty("supplier_name") + private String supplierName; + + @JsonProperty("quantity_real") + private Integer quantityReal; + + @JsonProperty("quantity_entry") + private Integer quantityEntry; +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/asinking/entity/PurchaseOutOrder.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/asinking/entity/PurchaseOutOrder.java new file mode 100644 index 0000000..76de11f --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/asinking/entity/PurchaseOutOrder.java @@ -0,0 +1,72 @@ +package org.asinkj.asinking.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.AutoMapping; +import lombok.Data; +import org.asinkj.amz.domain.BizPurchaseOrderItem; +import org.asinkj.amz.domain.BizPurchaseOutOrder; +import org.asinkj.amz.mapStruct.DateConvert; + +import java.util.Date; +import java.util.List; + +@Data +@AutoMapper(target = BizPurchaseOutOrder.class, uses = DateConvert.class) +public class PurchaseOutOrder { + @JsonProperty("order_sn") + private String orderSn; + + @JsonProperty("warehouse_name") + private String warehouseName; + + @JsonProperty("outsource_warehouse_name") + private String outsourceWarehouseName; + + @JsonProperty("supplier_name") + private String supplierName; + + @JsonProperty("create_time") + @AutoMapping(qualifiedByName = "stringToDate") + private String bizCreateTime; + + @JsonProperty("status_text") + private String statusText; + + @JsonProperty("create_realname") + private String createRealname; + + @JsonProperty("ptp_sn") + private String ptpSn; + + @JsonProperty("product_name") + private String productName; + + @JsonProperty("sku") + private String sku; + + @JsonProperty("fnsku") + private String fnsku; + + @JsonProperty("outsource_quantity") + private Integer outsourceQuantity; + + @JsonProperty("receive_quantity") + private Integer receiveQuantity; + + @JsonProperty("expect_arrive_time") + private String expectArriveTime; + +// @JsonProperty("msku") +// private List msku; +// +// @JsonProperty("plan_sn") +// private List planSn; + + @JsonProperty("seller_name") + private String sellerName; + + @JsonProperty("item") + private List items; +} diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizOrderOutItemMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizOrderOutItemMapper.xml new file mode 100644 index 0000000..67ea695 --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizOrderOutItemMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizPackingSpecsMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizPackingSpecsMapper.xml new file mode 100644 index 0000000..aee753e --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizPackingSpecsMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizPurchaseOutOrderMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizPurchaseOutOrderMapper.xml new file mode 100644 index 0000000..1d28f0d --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizPurchaseOutOrderMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendOrderItemMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendOrderItemMapper.xml new file mode 100644 index 0000000..42d504d --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizSendOrderItemMapper.xml @@ -0,0 +1,7 @@ + + + + +