diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPurchaseOrderController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPurchaseOrderController.java index 1d0382c..c7cbedf 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPurchaseOrderController.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizPurchaseOrderController.java @@ -43,13 +43,11 @@ public class BizPurchaseOrderController extends BaseController { private final IBizPurchaseOrderService bizPurchaseOrderService; - - /** * 查询采购单主列表 */ // @SaCheckPermission("amz:purchaseOrder:list") - @SaCheckRole(value = {"gongying","gengdan", "superadmin","yunying"}, mode = SaMode.OR) + @SaCheckRole(value = {"gongying", "gengdan", "superadmin", "yunying"}, mode = SaMode.OR) @GetMapping("/list") public TableDataInfo list(BizPurchaseOrderBo bo, PageQuery pageQuery) { return bizPurchaseOrderService.queryPageList(bo, pageQuery); @@ -74,7 +72,7 @@ public class BizPurchaseOrderController extends BaseController { @SaCheckPermission("amz:purchaseOrder:query") @GetMapping("/{id}") public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable Long id) { + @PathVariable Long id) { return R.ok(bizPurchaseOrderService.queryById(id)); } @@ -120,4 +118,30 @@ public class BizPurchaseOrderController extends BaseController { @PathVariable String[] orderSns) { return toAjax(bizPurchaseOrderService.deleteWithValidByIds(List.of(orderSns), true)); } + + + @SaCheckPermission("amz:shipmentPlan:query") + @GetMapping("/take-today-purchase-order") + public R takeTodayPurchaseOrder() throws Exception { + bizPurchaseOrderService.takeTodayPurchaseOrder(); + return R.ok(); + } + + + @SaCheckPermission("amz:shipmentPlan:query") + @GetMapping("/update-today-purchase-order") + public R updateTodayPurchaseOrder() throws Exception { + bizPurchaseOrderService.updateTodayPurchaseOrder(); + return R.ok(); + } + + + @GetMapping("/send-message-to-supplier/{message}/{supplier}") + public R sendMessageToSupplier(@PathVariable String message, @PathVariable String supplier) throws Exception { + bizPurchaseOrderService.sendMessageToSupplier(message, supplier); + return R.ok(); + } + + + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendShipmentRelController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendShipmentRelController.java index f821292..2729ad9 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendShipmentRelController.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizSendShipmentRelController.java @@ -2,6 +2,7 @@ package org.asinkj.amz.controller; import java.util.List; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; @@ -109,7 +110,7 @@ public class BizSendShipmentRelController extends BaseController { @PostMapping("/createBatchRelations") public R createBatchRelations( - @RequestBody BatchRelDTO dto) { + @Valid @RequestBody BatchRelDTO dto) { bizSendShipmentRelService.batchCreateRelations(dto); return R.ok(); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizShipmentPlanController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizShipmentPlanController.java index 4f8df38..d2edc6c 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizShipmentPlanController.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizShipmentPlanController.java @@ -134,6 +134,15 @@ public class BizShipmentPlanController extends BaseController { return toAjax(bizShipmentPlanService.deleteWithValidByIds(List.of(ids), true)); } + + @SaCheckPermission("amz:shipmentPlan:remove") + @Log(title = "删除货件计划发货单关系", businessType = BusinessType.DELETE) + @DeleteMapping("delete/{shipmentPlanId}/{sendOrderId}") + public R deleteRelation( + @NotNull(message = "计划ID不能为空") @PathVariable Long shipmentPlanId, @NotNull(message = "发货单ID不能为空") @PathVariable Long sendOrderId) { + return R.ok(bizShipmentPlanService.deleteBySendOrderShipmentPlan(shipmentPlanId, sendOrderId)); + } + /** * 获取货件计划详细信息 * diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizShipForward.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizShipForward.java index fa0c727..8eac1f6 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizShipForward.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizShipForward.java @@ -35,6 +35,8 @@ public class BizShipForward extends TenantEntity { */ private String orderSn; + private String inOrderSn; + /** * 采购店铺名称 */ @@ -132,5 +134,7 @@ public class BizShipForward extends TenantEntity { */ private Long boxNum; + private Long totalPrice; + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/SysUser.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/SysUser.java index e7c2c00..5620294 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/SysUser.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/SysUser.java @@ -26,6 +26,7 @@ public class SysUser extends TenantEntity { /** * 用户ID */ + @TableId(value = "user_id") private Long userId; /** diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BatchRelDTO.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BatchRelDTO.java index 51ce102..1934f07 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BatchRelDTO.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BatchRelDTO.java @@ -1,12 +1,15 @@ package org.asinkj.amz.domain.bo; import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import lombok.Data; import java.util.List; @Data public class BatchRelDTO { +// @NotNull(message = "关联关系不能为空") +// private Long sendOrderId23; @NotEmpty(message = "发货单ID列表不能为空") private List sendOrderIds; diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizShipForwardBo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizShipForwardBo.java index 66ac664..9afda91 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizShipForwardBo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizShipForwardBo.java @@ -37,6 +37,9 @@ public class BizShipForwardBo extends BaseEntity { @NotBlank(message = "采购单号不能为空", groups = {AddGroup.class, EditGroup.class}) private String orderSn; + @NotBlank(message = "采购单号不能为空", groups = {AddGroup.class, EditGroup.class}) + private String inOrderSn; + /** * 采购店铺名称 */ @@ -150,4 +153,7 @@ public class BizShipForwardBo extends BaseEntity { private Long boxNum; + private Long totalPrice; + + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipForwardVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipForwardVo.java index f45408b..dbf563a 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipForwardVo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizShipForwardVo.java @@ -1,6 +1,7 @@ package org.asinkj.amz.domain.vo; import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; import org.asinkj.amz.domain.BizShipForward; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; @@ -15,7 +16,6 @@ import java.io.Serializable; import java.util.Date; - /** * 货件转发视图对象 biz_ship_forward * @@ -43,6 +43,9 @@ public class BizShipForwardVo implements Serializable { @ExcelProperty(value = "采购单号") private String orderSn; + + private String inOrderSn; + /** * 采购店铺名称 */ @@ -135,7 +138,6 @@ public class BizShipForwardVo implements Serializable { private Long orderDetailId; - /** * 预计到达时间 */ @@ -147,4 +149,7 @@ public class BizShipForwardVo implements Serializable { private Long boxNum; + private Long totalPrice; + + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizShipmentPlanMapper.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizShipmentPlanMapper.java index 43a983c..aa9df74 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizShipmentPlanMapper.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizShipmentPlanMapper.java @@ -29,4 +29,6 @@ public interface BizShipmentPlanMapper extends BaseMapperPlus findOrderShipmentRelations(@Param("sendOrderIds") Collection sendOrderIds); List findByIds(@Param("ids") Collection ids); + + int deleteBySendOrderShipmentPlan(@Param("shipmentPlanId") Long shipmentPlanId,@Param("sendOrderId") Long sendOrderId); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPurchaseOrderService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPurchaseOrderService.java index f34f4c2..0579430 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPurchaseOrderService.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizPurchaseOrderService.java @@ -68,4 +68,10 @@ public interface IBizPurchaseOrderService { Boolean deleteWithValidByIds(Collection ids, Boolean isValid); Boolean confirmByBo(BizPurchaseOrderBo bo); + + void takeTodayPurchaseOrder() throws Exception; + + void updateTodayPurchaseOrder() throws Exception; + + void sendMessageToSupplier(String message, String supplier); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizShipmentPlanService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizShipmentPlanService.java index ed46e15..79cca5e 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizShipmentPlanService.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizShipmentPlanService.java @@ -89,4 +89,6 @@ public interface IBizShipmentPlanService { void importExcel(InputStream inputStream); Boolean linkByBo(BizShipmentPlanBo bo); + + int deleteBySendOrderShipmentPlan(Long shipmentPlanId, Long sendOrderId); } 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 1b2bcb3..5457f25 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 @@ -2,9 +2,13 @@ package org.asinkj.amz.service.impl; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.mapper.*; import org.asinkj.amz.service.IBizPurchaseOrderItemService; @@ -17,6 +21,7 @@ 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.asinkj.common.wp.handler.WxMessagesManager; import org.springframework.stereotype.Service; import org.asinkj.amz.domain.bo.BizPurchaseOrderBo; import org.asinkj.amz.domain.vo.BizPurchaseOrderVo; @@ -35,6 +40,7 @@ import java.util.stream.Collectors; */ @RequiredArgsConstructor @Service +@Slf4j public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService { private final BizPurchaseOrderMapper baseMapper; @@ -57,6 +63,9 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService { @Resource private BizPurchaseOrderItemMapper bizPurchaseOrderItemMapper; + @Resource + private RemoteFBADataService remoteFBADataService; + /** * 查询采购单主 @@ -311,4 +320,33 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService { purchaseOrderItemMapper.update(lambdaUpdateWrapper); return baseMapper.updateById(update) > 0; } + + @Override + public void takeTodayPurchaseOrder() throws Exception { + DateTime today = DateUtil.date(); + String todayString = today.toString("yyyy-MM-dd"); + log.info("yesterdayString. yesterdayString:{}", todayString); + //获取今天的日期 + DateTime tomorrow = DateUtil.tomorrow(); + String tomorrowString = tomorrow.toString("yyyy-MM-dd"); + log.info("todayString. todayString:{}", tomorrowString); + remoteFBADataService.pullPurchaseOrderData(todayString, tomorrowString); + } + + @Override + public void updateTodayPurchaseOrder() throws Exception { + DateTime today = DateUtil.date(); + String todayString = today.toString("yyyy-MM-dd"); + log.info("yesterdayString. yesterdayString:{}", todayString); + //获取今天的日期 + DateTime tomorrow = DateUtil.tomorrow(); + String tomorrowString = tomorrow.toString("yyyy-MM-dd"); + log.info("todayString. todayString:{}", tomorrowString); + remoteFBADataService.updatePurchaseOrderSeller(todayString, tomorrowString); + } + + @Override + public void sendMessageToSupplier(String message, String supplier) { + WxMessagesManager.sendWechatTempMessage(message, supplier); + } } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipForwardServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipForwardServiceImpl.java index 65f307c..508e884 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipForwardServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizShipForwardServiceImpl.java @@ -1,9 +1,15 @@ package org.asinkj.amz.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; 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.BizPurchaseOrder; +import org.asinkj.amz.domain.BizShipmentPlan; +import org.asinkj.amz.mapper.BizPurchaseOrderMapper; +import org.asinkj.amz.mapper.BizShipmentPlanMapper; +import org.asinkj.common.core.exception.ServiceException; import org.asinkj.common.core.utils.MapstructUtils; import org.asinkj.common.core.utils.StringUtils; import org.asinkj.common.mybatis.core.page.TableDataInfo; @@ -22,6 +28,7 @@ import org.asinkj.amz.domain.BizShipForward; import org.asinkj.amz.mapper.BizShipForwardMapper; import org.asinkj.amz.service.IBizShipForwardService; +import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.Collection; @@ -42,6 +49,9 @@ public class BizShipForwardServiceImpl implements IBizShipForwardService { @DubboReference private RemoteUserService remoteUserService; + @Resource + private BizPurchaseOrderMapper bizPurchaseOrderMapper; + /** * 查询货件转发 * @@ -153,6 +163,15 @@ public class BizShipForwardServiceImpl implements IBizShipForwardService { */ private void validEntityBeforeSave(BizShipForward entity) { //TODO 做一些数据校验,如唯一约束 + if (StringUtils.isNotEmpty(entity.getInOrderSn())&&StringUtils.isNotEmpty(entity.getInSupplierName())){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(BizPurchaseOrder::getOrderSn,entity.getInOrderSn()) + .eq(BizPurchaseOrder::getSupplierName,entity.getInSupplierName()); + List purchaseOrders = bizPurchaseOrderMapper.selectList(lambdaQueryWrapper); + if (CollectionUtil.isEmpty(purchaseOrders)){ + throw new ServiceException("采购单不存在或不属于该收货供应商"); + } + } } /** 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 fad68e6..28e59fa 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 @@ -490,6 +490,11 @@ public class BizShipmentPlanServiceImpl implements IBizShipmentPlanService { return baseMapper.updateById(update) > 0; } + @Override + public int deleteBySendOrderShipmentPlan(Long shipmentPlanId, Long sendOrderId) { + return baseMapper.deleteBySendOrderShipmentPlan(shipmentPlanId, sendOrderId); + } + private void checkData(List bizShipmentPlanFileDataList) { boolean isAllSame = bizShipmentPlanFileDataList.stream() .map(BizShipmentPlanFileData::getShipmentId) 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 5698aec..1ce718c 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 @@ -744,7 +744,9 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService { queryParam.put("length", 200); queryParam.put("dateBegin", startDate); queryParam.put("dateEnd", endDate); - queryParam.put("dateType", 1); +// queryParam.put("sids", JSON.toJSON(List.of(112))); + queryParam.put("shipmentIdList", JSON.toJSON(List.of("FBA18Y3QBXGJ"))); + queryParam.put("dateType", 2); HttpUtil.postWithParams("/amzStaServer/openapi/inbound-plan/page", queryParam, new Callback() { @Override @@ -858,9 +860,11 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService { log.info("bizShipmentPlans:{}", bizShipmentPlans); ArrayList shipmentIdList = new ArrayList<>(); if (CollectionUtil.isNotEmpty(bizShipmentPlans)) { - Set readyToShip = bizShipmentPlans.stream().filter(bizShipmentPlan -> bizShipmentPlan.getShipmentStatus().equals("READY_TO_SHIP")).collect(Collectors.toSet()); - bizShipmentPlanMapper.insertBatch(readyToShip); - shipmentIdList.addAll(readyToShip.stream().map(BizShipmentPlan::getShipmentId).toList()); + Set readyToShip = new HashSet<>(bizShipmentPlans); + if (CollectionUtil.isNotEmpty(readyToShip)) { + bizShipmentPlanMapper.insertBatch(readyToShip); + shipmentIdList.addAll(readyToShip.stream().map(BizShipmentPlan::getShipmentId).toList()); + } } if (CollectionUtil.isNotEmpty(bizTrackingList)) { List collect = bizTrackingList.stream().filter(bizShipmentTracking -> shipmentIdList.contains(bizShipmentTracking.getShipmentId())).collect(Collectors.toList()); @@ -911,7 +915,7 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService { AmzShippingResponse amzShippingResponse = JSON.parseObject(shipmentString, new TypeReference<>() { }); - if (amzShippingResponse.getData() == null){ + if (amzShippingResponse.getData() == null) { return bizShipmentPlans; } diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizShipmentPlanMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizShipmentPlanMapper.xml index 6186e19..d8663b5 100644 --- a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizShipmentPlanMapper.xml +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizShipmentPlanMapper.xml @@ -145,4 +145,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{id} + + + + DELETE FROM biz_send_shipment_rel + WHERE send_order_id = #{sendOrderId} and shipment_plan_id = #{shipmentPlanId} +