7月新需求修改

This commit is contained in:
dev 2025-07-02 14:32:57 +08:00
parent ba66f30750
commit a33c41a7e3
16 changed files with 147 additions and 12 deletions

View File

@ -43,13 +43,11 @@ public class BizPurchaseOrderController extends BaseController {
private final IBizPurchaseOrderService bizPurchaseOrderService; private final IBizPurchaseOrderService bizPurchaseOrderService;
/** /**
* 查询采购单主列表 * 查询采购单主列表
*/ */
// @SaCheckPermission("amz:purchaseOrder:list") // @SaCheckPermission("amz:purchaseOrder:list")
@SaCheckRole(value = {"gongying","gengdan", "superadmin","yunying"}, mode = SaMode.OR) @SaCheckRole(value = {"gongying", "gengdan", "superadmin", "yunying"}, mode = SaMode.OR)
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<BizPurchaseOrderVo> list(BizPurchaseOrderBo bo, PageQuery pageQuery) { public TableDataInfo<BizPurchaseOrderVo> list(BizPurchaseOrderBo bo, PageQuery pageQuery) {
return bizPurchaseOrderService.queryPageList(bo, pageQuery); return bizPurchaseOrderService.queryPageList(bo, pageQuery);
@ -120,4 +118,30 @@ public class BizPurchaseOrderController extends BaseController {
@PathVariable String[] orderSns) { @PathVariable String[] orderSns) {
return toAjax(bizPurchaseOrderService.deleteWithValidByIds(List.of(orderSns), true)); return toAjax(bizPurchaseOrderService.deleteWithValidByIds(List.of(orderSns), true));
} }
@SaCheckPermission("amz:shipmentPlan:query")
@GetMapping("/take-today-purchase-order")
public R<Void> takeTodayPurchaseOrder() throws Exception {
bizPurchaseOrderService.takeTodayPurchaseOrder();
return R.ok();
}
@SaCheckPermission("amz:shipmentPlan:query")
@GetMapping("/update-today-purchase-order")
public R<Void> updateTodayPurchaseOrder() throws Exception {
bizPurchaseOrderService.updateTodayPurchaseOrder();
return R.ok();
}
@GetMapping("/send-message-to-supplier/{message}/{supplier}")
public R<Void> sendMessageToSupplier(@PathVariable String message, @PathVariable String supplier) throws Exception {
bizPurchaseOrderService.sendMessageToSupplier(message, supplier);
return R.ok();
}
} }

View File

@ -2,6 +2,7 @@ package org.asinkj.amz.controller;
import java.util.List; import java.util.List;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
@ -109,7 +110,7 @@ public class BizSendShipmentRelController extends BaseController {
@PostMapping("/createBatchRelations") @PostMapping("/createBatchRelations")
public R<Void> createBatchRelations( public R<Void> createBatchRelations(
@RequestBody BatchRelDTO dto) { @Valid @RequestBody BatchRelDTO dto) {
bizSendShipmentRelService.batchCreateRelations(dto); bizSendShipmentRelService.batchCreateRelations(dto);
return R.ok(); return R.ok();
} }

View File

@ -134,6 +134,15 @@ public class BizShipmentPlanController extends BaseController {
return toAjax(bizShipmentPlanService.deleteWithValidByIds(List.of(ids), true)); return toAjax(bizShipmentPlanService.deleteWithValidByIds(List.of(ids), true));
} }
@SaCheckPermission("amz:shipmentPlan:remove")
@Log(title = "删除货件计划发货单关系", businessType = BusinessType.DELETE)
@DeleteMapping("delete/{shipmentPlanId}/{sendOrderId}")
public R<Integer> deleteRelation(
@NotNull(message = "计划ID不能为空") @PathVariable Long shipmentPlanId, @NotNull(message = "发货单ID不能为空") @PathVariable Long sendOrderId) {
return R.ok(bizShipmentPlanService.deleteBySendOrderShipmentPlan(shipmentPlanId, sendOrderId));
}
/** /**
* 获取货件计划详细信息 * 获取货件计划详细信息
* *

View File

@ -35,6 +35,8 @@ public class BizShipForward extends TenantEntity {
*/ */
private String orderSn; private String orderSn;
private String inOrderSn;
/** /**
* 采购店铺名称 * 采购店铺名称
*/ */
@ -132,5 +134,7 @@ public class BizShipForward extends TenantEntity {
*/ */
private Long boxNum; private Long boxNum;
private Long totalPrice;
} }

View File

@ -26,6 +26,7 @@ public class SysUser extends TenantEntity {
/** /**
* 用户ID * 用户ID
*/ */
@TableId(value = "user_id")
private Long userId; private Long userId;
/** /**

View File

@ -1,12 +1,15 @@
package org.asinkj.amz.domain.bo; package org.asinkj.amz.domain.bo;
import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
@Data @Data
public class BatchRelDTO { public class BatchRelDTO {
// @NotNull(message = "关联关系不能为空")
// private Long sendOrderId23;
@NotEmpty(message = "发货单ID列表不能为空") @NotEmpty(message = "发货单ID列表不能为空")
private List<Long> sendOrderIds; private List<Long> sendOrderIds;

View File

@ -37,6 +37,9 @@ public class BizShipForwardBo extends BaseEntity {
@NotBlank(message = "采购单号不能为空", groups = {AddGroup.class, EditGroup.class}) @NotBlank(message = "采购单号不能为空", groups = {AddGroup.class, EditGroup.class})
private String orderSn; 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 boxNum;
private Long totalPrice;
} }

View File

@ -1,6 +1,7 @@
package org.asinkj.amz.domain.vo; package org.asinkj.amz.domain.vo;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.asinkj.amz.domain.BizShipForward; import org.asinkj.amz.domain.BizShipForward;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
@ -15,7 +16,6 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
/** /**
* 货件转发视图对象 biz_ship_forward * 货件转发视图对象 biz_ship_forward
* *
@ -43,6 +43,9 @@ public class BizShipForwardVo implements Serializable {
@ExcelProperty(value = "采购单号") @ExcelProperty(value = "采购单号")
private String orderSn; private String orderSn;
private String inOrderSn;
/** /**
* 采购店铺名称 * 采购店铺名称
*/ */
@ -135,7 +138,6 @@ public class BizShipForwardVo implements Serializable {
private Long orderDetailId; private Long orderDetailId;
/** /**
* 预计到达时间 * 预计到达时间
*/ */
@ -147,4 +149,7 @@ public class BizShipForwardVo implements Serializable {
private Long boxNum; private Long boxNum;
private Long totalPrice;
} }

View File

@ -29,4 +29,6 @@ public interface BizShipmentPlanMapper extends BaseMapperPlus<BizShipmentPlan, B
List<OrderShipmentRelation> findOrderShipmentRelations(@Param("sendOrderIds") Collection<Long> sendOrderIds); List<OrderShipmentRelation> findOrderShipmentRelations(@Param("sendOrderIds") Collection<Long> sendOrderIds);
List<BizShipmentPlan> findByIds(@Param("ids") Collection<Long> ids); List<BizShipmentPlan> findByIds(@Param("ids") Collection<Long> ids);
int deleteBySendOrderShipmentPlan(@Param("shipmentPlanId") Long shipmentPlanId,@Param("sendOrderId") Long sendOrderId);
} }

View File

@ -68,4 +68,10 @@ public interface IBizPurchaseOrderService {
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
Boolean confirmByBo(BizPurchaseOrderBo bo); Boolean confirmByBo(BizPurchaseOrderBo bo);
void takeTodayPurchaseOrder() throws Exception;
void updateTodayPurchaseOrder() throws Exception;
void sendMessageToSupplier(String message, String supplier);
} }

View File

@ -89,4 +89,6 @@ public interface IBizShipmentPlanService {
void importExcel(InputStream inputStream); void importExcel(InputStream inputStream);
Boolean linkByBo(BizShipmentPlanBo bo); Boolean linkByBo(BizShipmentPlanBo bo);
int deleteBySendOrderShipmentPlan(Long shipmentPlanId, Long sendOrderId);
} }

View File

@ -2,9 +2,13 @@ package org.asinkj.amz.service.impl;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.collection.CollectionUtil; 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.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; 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.*;
import org.asinkj.amz.mapper.*; import org.asinkj.amz.mapper.*;
import org.asinkj.amz.service.IBizPurchaseOrderItemService; 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 com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.asinkj.common.satoken.utils.LoginHelper; import org.asinkj.common.satoken.utils.LoginHelper;
import org.asinkj.common.wp.handler.WxMessagesManager;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.asinkj.amz.domain.bo.BizPurchaseOrderBo; import org.asinkj.amz.domain.bo.BizPurchaseOrderBo;
import org.asinkj.amz.domain.vo.BizPurchaseOrderVo; import org.asinkj.amz.domain.vo.BizPurchaseOrderVo;
@ -35,6 +40,7 @@ import java.util.stream.Collectors;
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
@Slf4j
public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService { public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService {
private final BizPurchaseOrderMapper baseMapper; private final BizPurchaseOrderMapper baseMapper;
@ -57,6 +63,9 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService {
@Resource @Resource
private BizPurchaseOrderItemMapper bizPurchaseOrderItemMapper; private BizPurchaseOrderItemMapper bizPurchaseOrderItemMapper;
@Resource
private RemoteFBADataService remoteFBADataService;
/** /**
* 查询采购单主 * 查询采购单主
@ -311,4 +320,33 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService {
purchaseOrderItemMapper.update(lambdaUpdateWrapper); purchaseOrderItemMapper.update(lambdaUpdateWrapper);
return baseMapper.updateById(update) > 0; 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);
}
} }

View File

@ -1,9 +1,15 @@
package org.asinkj.amz.service.impl; package org.asinkj.amz.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.dubbo.config.annotation.DubboReference; 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.MapstructUtils;
import org.asinkj.common.core.utils.StringUtils; import org.asinkj.common.core.utils.StringUtils;
import org.asinkj.common.mybatis.core.page.TableDataInfo; 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.mapper.BizShipForwardMapper;
import org.asinkj.amz.service.IBizShipForwardService; import org.asinkj.amz.service.IBizShipForwardService;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
@ -42,6 +49,9 @@ public class BizShipForwardServiceImpl implements IBizShipForwardService {
@DubboReference @DubboReference
private RemoteUserService remoteUserService; private RemoteUserService remoteUserService;
@Resource
private BizPurchaseOrderMapper bizPurchaseOrderMapper;
/** /**
* 查询货件转发 * 查询货件转发
* *
@ -153,6 +163,15 @@ public class BizShipForwardServiceImpl implements IBizShipForwardService {
*/ */
private void validEntityBeforeSave(BizShipForward entity) { private void validEntityBeforeSave(BizShipForward entity) {
//TODO 做一些数据校验,如唯一约束 //TODO 做一些数据校验,如唯一约束
if (StringUtils.isNotEmpty(entity.getInOrderSn())&&StringUtils.isNotEmpty(entity.getInSupplierName())){
LambdaQueryWrapper<BizPurchaseOrder> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(BizPurchaseOrder::getOrderSn,entity.getInOrderSn())
.eq(BizPurchaseOrder::getSupplierName,entity.getInSupplierName());
List<BizPurchaseOrder> purchaseOrders = bizPurchaseOrderMapper.selectList(lambdaQueryWrapper);
if (CollectionUtil.isEmpty(purchaseOrders)){
throw new ServiceException("采购单不存在或不属于该收货供应商");
}
}
} }
/** /**

View File

@ -490,6 +490,11 @@ public class BizShipmentPlanServiceImpl implements IBizShipmentPlanService {
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }
@Override
public int deleteBySendOrderShipmentPlan(Long shipmentPlanId, Long sendOrderId) {
return baseMapper.deleteBySendOrderShipmentPlan(shipmentPlanId, sendOrderId);
}
private void checkData(List<BizShipmentPlanFileData> bizShipmentPlanFileDataList) { private void checkData(List<BizShipmentPlanFileData> bizShipmentPlanFileDataList) {
boolean isAllSame = bizShipmentPlanFileDataList.stream() boolean isAllSame = bizShipmentPlanFileDataList.stream()
.map(BizShipmentPlanFileData::getShipmentId) .map(BizShipmentPlanFileData::getShipmentId)

View File

@ -744,7 +744,9 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService {
queryParam.put("length", 200); queryParam.put("length", 200);
queryParam.put("dateBegin", startDate); queryParam.put("dateBegin", startDate);
queryParam.put("dateEnd", endDate); 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() { HttpUtil.postWithParams("/amzStaServer/openapi/inbound-plan/page", queryParam, new Callback() {
@Override @Override
@ -858,10 +860,12 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService {
log.info("bizShipmentPlans:{}", bizShipmentPlans); log.info("bizShipmentPlans:{}", bizShipmentPlans);
ArrayList<String> shipmentIdList = new ArrayList<>(); ArrayList<String> shipmentIdList = new ArrayList<>();
if (CollectionUtil.isNotEmpty(bizShipmentPlans)) { if (CollectionUtil.isNotEmpty(bizShipmentPlans)) {
Set<BizShipmentPlan> readyToShip = bizShipmentPlans.stream().filter(bizShipmentPlan -> bizShipmentPlan.getShipmentStatus().equals("READY_TO_SHIP")).collect(Collectors.toSet()); Set<BizShipmentPlan> readyToShip = new HashSet<>(bizShipmentPlans);
if (CollectionUtil.isNotEmpty(readyToShip)) {
bizShipmentPlanMapper.insertBatch(readyToShip); bizShipmentPlanMapper.insertBatch(readyToShip);
shipmentIdList.addAll(readyToShip.stream().map(BizShipmentPlan::getShipmentId).toList()); shipmentIdList.addAll(readyToShip.stream().map(BizShipmentPlan::getShipmentId).toList());
} }
}
if (CollectionUtil.isNotEmpty(bizTrackingList)) { if (CollectionUtil.isNotEmpty(bizTrackingList)) {
List<BizShipmentTracking> collect = bizTrackingList.stream().filter(bizShipmentTracking -> shipmentIdList.contains(bizShipmentTracking.getShipmentId())).collect(Collectors.toList()); List<BizShipmentTracking> 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<>() { AmzShippingResponse amzShippingResponse = JSON.parseObject(shipmentString, new TypeReference<>() {
}); });
if (amzShippingResponse.getData() == null){ if (amzShippingResponse.getData() == null) {
return bizShipmentPlans; return bizShipmentPlans;
} }

View File

@ -145,4 +145,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{id} #{id}
</foreach> </foreach>
</select> </select>
<delete id="deleteBySendOrderShipmentPlan">
DELETE FROM biz_send_shipment_rel
WHERE send_order_id = #{sendOrderId} and shipment_plan_id = #{shipmentPlanId}
</delete>
</mapper> </mapper>