5.9新需求修改
This commit is contained in:
parent
615549ed5e
commit
2d48aabf61
@ -25,6 +25,8 @@ public interface RemoteUserService {
|
||||
*/
|
||||
LoginUser getUserInfo(String username, String tenantId) throws UserException;
|
||||
|
||||
LoginUser getUserInfoWithNickName(String nickName) throws UserException;
|
||||
|
||||
/**
|
||||
* 通过用户id查询用户信息
|
||||
*
|
||||
@ -149,4 +151,6 @@ public interface RemoteUserService {
|
||||
* @return 用户ids
|
||||
*/
|
||||
List<String> selectUserOpenIdsByRoleIds(List<Long> roleIds);
|
||||
|
||||
List<RemoteUserVo> selectUserByRoleIds(List<Long> roleIds);
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.asinkj.amz.service.IBizPurchaseOrderItemService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.asinkj.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -22,6 +23,8 @@ import org.asinkj.amz.domain.bo.BizPurchaseOrderBo;
|
||||
import org.asinkj.amz.service.IBizPurchaseOrderService;
|
||||
import org.asinkj.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 采购单主
|
||||
* 前端访问路由地址为:/amz/purchaseOrder
|
||||
@ -37,6 +40,9 @@ public class BizPurchaseOrderController extends BaseController {
|
||||
|
||||
private final IBizPurchaseOrderService bizPurchaseOrderService;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询采购单主列表
|
||||
*/
|
||||
|
@ -0,0 +1,108 @@
|
||||
package org.asinkj.amz.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
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.BizSendOrderVo;
|
||||
import org.asinkj.amz.domain.bo.BizSendOrderBo;
|
||||
import org.asinkj.amz.service.IBizSendOrderService;
|
||||
import org.asinkj.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 供应商创建的发货单
|
||||
* 前端访问路由地址为:/amz/sendOrder
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-14
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/sendOrder")
|
||||
public class BizSendOrderController extends BaseController {
|
||||
|
||||
private final IBizSendOrderService bizSendOrderService;
|
||||
|
||||
/**
|
||||
* 查询供应商创建的发货单列表
|
||||
*/
|
||||
@SaCheckRole(value = {"gongying","gengdan", "superadmin"}, mode = SaMode.OR)
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<BizSendOrderVo> list(BizSendOrderBo bo, PageQuery pageQuery) {
|
||||
return bizSendOrderService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出供应商创建的发货单列表
|
||||
*/
|
||||
@SaCheckRole(value = {"gongying","gengdan", "superadmin"}, mode = SaMode.OR)
|
||||
@Log(title = "供应商创建的发货单", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(BizSendOrderBo bo, HttpServletResponse response) {
|
||||
List<BizSendOrderVo> list = bizSendOrderService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "供应商创建的发货单", BizSendOrderVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取供应商创建的发货单详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckRole(value = {"gongying","gengdan", "superadmin"}, mode = SaMode.OR)
|
||||
@GetMapping("/{id}")
|
||||
public R<BizSendOrderVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(bizSendOrderService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增供应商创建的发货单
|
||||
*/
|
||||
@SaCheckRole(value = {"gongying", "superadmin"}, mode = SaMode.OR)
|
||||
@Log(title = "供应商创建的发货单", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody BizSendOrderBo bo) {
|
||||
return toAjax(bizSendOrderService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改供应商创建的发货单
|
||||
*/
|
||||
@SaCheckRole(value = {"gongying","gengdan", "superadmin"}, mode = SaMode.OR)
|
||||
@Log(title = "供应商创建的发货单", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BizSendOrderBo bo) {
|
||||
return toAjax(bizSendOrderService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除供应商创建的发货单
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("amz:sendOrder:remove")
|
||||
@Log(title = "供应商创建的发货单", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(bizSendOrderService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
package org.asinkj.amz.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
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.BizShipForwardVo;
|
||||
import org.asinkj.amz.domain.bo.BizShipForwardBo;
|
||||
import org.asinkj.amz.service.IBizShipForwardService;
|
||||
import org.asinkj.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 货件转发
|
||||
* 前端访问路由地址为:/amz/shipForward
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-13
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/shipForward")
|
||||
public class BizShipForwardController extends BaseController {
|
||||
|
||||
private final IBizShipForwardService bizShipForwardService;
|
||||
|
||||
/**
|
||||
* 查询货件转发列表
|
||||
*/
|
||||
@SaCheckPermission("amz:shipForward:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<BizShipForwardVo> list(BizShipForwardBo bo, PageQuery pageQuery) {
|
||||
return bizShipForwardService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出货件转发列表
|
||||
*/
|
||||
@SaCheckPermission("amz:shipForward:export")
|
||||
@Log(title = "货件转发", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(BizShipForwardBo bo, HttpServletResponse response) {
|
||||
List<BizShipForwardVo> list = bizShipForwardService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "货件转发", BizShipForwardVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取货件转发详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("amz:shipForward:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<BizShipForwardVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(bizShipForwardService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增货件转发
|
||||
*/
|
||||
@SaCheckPermission("amz:shipForward:add")
|
||||
@SaCheckRole(value = {"gengdan", "superadmin"}, mode = SaMode.OR)
|
||||
@Log(title = "货件转发", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody BizShipForwardBo bo) {
|
||||
return toAjax(bizShipForwardService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改货件转发
|
||||
*/
|
||||
@SaCheckPermission("amz:shipForward:edit")
|
||||
@Log(title = "货件转发", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BizShipForwardBo bo) {
|
||||
return toAjax(bizShipForwardService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除货件转发
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("amz:shipForward:remove")
|
||||
@Log(title = "货件转发", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(bizShipForwardService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
@ -168,6 +168,21 @@ public class SysAmazonStoreController extends BaseController {
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@GetMapping("/purchaseOut/{startDate}/{endDate}")
|
||||
public R<Void> updatePurchaseOrderSeller(@PathVariable String startDate, @PathVariable String endDate) {
|
||||
try {
|
||||
sysAmazonStoreService.updatePurchaseOrderSeller(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")
|
||||
|
@ -1,5 +1,6 @@
|
||||
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;
|
||||
@ -26,6 +27,7 @@ public class BizPurchaseOrder extends TenantEntity {
|
||||
/**
|
||||
* 采购单号
|
||||
*/
|
||||
@TableId
|
||||
private String orderSn;
|
||||
|
||||
/**
|
||||
@ -66,6 +68,7 @@ public class BizPurchaseOrder extends TenantEntity {
|
||||
/**
|
||||
* 下单时间
|
||||
*/
|
||||
@AutoMapping(dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date orderTime;
|
||||
|
||||
/**
|
||||
@ -81,6 +84,7 @@ public class BizPurchaseOrder extends TenantEntity {
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
@AutoMapping(dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date auditorTime;
|
||||
|
||||
/**
|
||||
@ -91,6 +95,7 @@ public class BizPurchaseOrder extends TenantEntity {
|
||||
/**
|
||||
* 最后操作时间
|
||||
*/
|
||||
@AutoMapping(dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date lastTime;
|
||||
|
||||
/**
|
||||
@ -272,6 +277,7 @@ public class BizPurchaseOrder extends TenantEntity {
|
||||
/**
|
||||
* 交货时间
|
||||
*/
|
||||
@AutoMapping(dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date deliveryTime;
|
||||
|
||||
/**
|
||||
@ -280,4 +286,7 @@ public class BizPurchaseOrder extends TenantEntity {
|
||||
private Long dlvTimeVar;
|
||||
|
||||
|
||||
private String storeName;
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
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;
|
||||
@ -71,7 +72,7 @@ public class BizPurchaseOrderItem extends TenantEntity {
|
||||
/**
|
||||
* 店铺ID
|
||||
*/
|
||||
private String sid;
|
||||
private Long sid;
|
||||
|
||||
/**
|
||||
* 型号
|
||||
@ -131,6 +132,7 @@ public class BizPurchaseOrderItem extends TenantEntity {
|
||||
/**
|
||||
* 期待到货时间
|
||||
*/
|
||||
@AutoMapping(dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date expectArriveTime;
|
||||
|
||||
/**
|
||||
|
@ -0,0 +1,93 @@
|
||||
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
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-14
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("biz_send_order")
|
||||
public class BizSendOrder 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 Long quantitySend;
|
||||
|
||||
/**
|
||||
* 单箱产品数量
|
||||
*/
|
||||
private Long quantityPerBox;
|
||||
|
||||
/**
|
||||
* 箱数
|
||||
*/
|
||||
private Long boxCount;
|
||||
|
||||
/**
|
||||
* 箱子尺寸
|
||||
*/
|
||||
private String boxDimensions;
|
||||
|
||||
/**
|
||||
* 单箱重量
|
||||
*/
|
||||
private Long weightPerBox;
|
||||
|
||||
/**
|
||||
* 实际采购店铺
|
||||
*/
|
||||
private String realStoreName;
|
||||
|
||||
/**
|
||||
* 发货状态(pending=未发货,confirm=确认发货, processing=发货中,completed=发货完成)
|
||||
*/
|
||||
private String sendStatus;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
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_ship_forward
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-13
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("biz_ship_forward")
|
||||
public class BizShipForward extends TenantEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* $column.columnComment
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 采购单号
|
||||
*/
|
||||
private String orderSn;
|
||||
|
||||
/**
|
||||
* 采购店铺名称
|
||||
*/
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 产品唯一标识码
|
||||
*/
|
||||
private String sku;
|
||||
|
||||
/**
|
||||
* 产品全称
|
||||
*/
|
||||
private String productName;
|
||||
|
||||
/**
|
||||
* 实际发货数量
|
||||
*/
|
||||
private Long quantitySend;
|
||||
|
||||
/**
|
||||
* 发货供应商名称
|
||||
*/
|
||||
private String outSupplierName;
|
||||
|
||||
/**
|
||||
* 发货供应商系统ID
|
||||
*/
|
||||
private Long outSupplierId;
|
||||
|
||||
/**
|
||||
* 收货供应商名称
|
||||
*/
|
||||
private String inSupplierName;
|
||||
|
||||
/**
|
||||
* 收货供应商系统ID
|
||||
*/
|
||||
private Long inSupplierId;
|
||||
|
||||
/**
|
||||
* 计划发货起始时间
|
||||
*/
|
||||
private Date shipmentStart;
|
||||
|
||||
/**
|
||||
* 计划发货截止时间
|
||||
*/
|
||||
private Date shipmentEnd;
|
||||
|
||||
/**
|
||||
* 订单跟进人姓名
|
||||
*/
|
||||
private String trackerName;
|
||||
|
||||
/**
|
||||
* 订单跟进人系统ID
|
||||
*/
|
||||
private Long trackerId;
|
||||
|
||||
/**
|
||||
* 软删除标记(0-正常,2-删除)
|
||||
*/
|
||||
@TableLogic
|
||||
private String delFlag;
|
||||
|
||||
/**
|
||||
* 转发状态(pending=未转发,processing=转发中,completed=转发完成)
|
||||
*/
|
||||
private String fwdStatus;
|
||||
|
||||
/**
|
||||
* 发货时间
|
||||
*/
|
||||
private Date sendTime;
|
||||
|
||||
/**
|
||||
* 采购单子项ID
|
||||
*/
|
||||
private Long orderDetailId;
|
||||
|
||||
|
||||
}
|
@ -8,7 +8,9 @@ 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;
|
||||
|
||||
/**
|
||||
@ -25,301 +27,301 @@ public class BizPurchaseOrderBo extends BaseEntity {
|
||||
/**
|
||||
* 采购单号
|
||||
*/
|
||||
@NotBlank(message = "采购单号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotBlank(message = "采购单号不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String orderSn;
|
||||
|
||||
/**
|
||||
* 自定义单号
|
||||
*/
|
||||
@NotBlank(message = "自定义单号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "自定义单号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String customOrderSn;
|
||||
|
||||
/**
|
||||
* 供应商ID
|
||||
*/
|
||||
@NotNull(message = "供应商ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "供应商ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long supplierId;
|
||||
|
||||
/**
|
||||
* 供应商名称
|
||||
*/
|
||||
@NotBlank(message = "供应商名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "供应商名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String supplierName;
|
||||
|
||||
/**
|
||||
* 采购员ID
|
||||
*/
|
||||
@NotNull(message = "采购员ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "采购员ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long optUid;
|
||||
|
||||
/**
|
||||
* 审核人姓名
|
||||
*/
|
||||
@NotBlank(message = "审核人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "审核人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String auditorRealname;
|
||||
|
||||
/**
|
||||
* 操作人姓名
|
||||
*/
|
||||
@NotBlank(message = "操作人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "操作人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String optRealname;
|
||||
|
||||
/**
|
||||
* 最后操作人姓名
|
||||
*/
|
||||
@NotBlank(message = "最后操作人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "最后操作人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String lastRealname;
|
||||
|
||||
/**
|
||||
* 下单时间
|
||||
*/
|
||||
@NotNull(message = "下单时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "下单时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date orderTime;
|
||||
|
||||
/**
|
||||
* 应付货款(手工)
|
||||
*/
|
||||
@NotBlank(message = "应付货款(手工)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "应付货款(手工)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String payment;
|
||||
|
||||
/**
|
||||
* 审核人员ID
|
||||
*/
|
||||
@NotNull(message = "审核人员ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "审核人员ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long auditorUid;
|
||||
|
||||
/**
|
||||
* 审核时间
|
||||
*/
|
||||
@NotNull(message = "审核时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "审核时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date auditorTime;
|
||||
|
||||
/**
|
||||
* 最后操作人员ID
|
||||
*/
|
||||
@NotNull(message = "最后操作人员ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "最后操作人员ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long lastUid;
|
||||
|
||||
/**
|
||||
* 最后操作时间
|
||||
*/
|
||||
@NotNull(message = "最后操作时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "最后操作时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date lastTime;
|
||||
|
||||
/**
|
||||
* 作废原因
|
||||
*/
|
||||
@NotBlank(message = "作废原因不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "作废原因不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String reason;
|
||||
|
||||
/**
|
||||
* 是否含税:0 否,1 是
|
||||
*/
|
||||
@NotNull(message = "是否含税:0 否,1 是不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "是否含税:0 否,1 是不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long isTax;
|
||||
|
||||
/**
|
||||
* 采购单状态:-1 作废, 3 待提交, 1 待下单, 2 待签收, 9 完成, 121 待审核, 122 驳回, 124 作废
|
||||
*/
|
||||
@NotNull(message = "采购单状态:-1 作废, 3 待提交, 1 待下单, 2 待签收, 9 完成, 121 待审核, 122 驳回, 124 作废不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "采购单状态:-1 作废, 3 待提交, 1 待下单, 2 待签收, 9 完成, 121 待审核, 122 驳回, 124 作废不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long status;
|
||||
|
||||
/**
|
||||
* 状态说明
|
||||
*/
|
||||
@NotBlank(message = "状态说明不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "状态说明不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String statusText;
|
||||
|
||||
/**
|
||||
* 支付状态说明
|
||||
*/
|
||||
@NotBlank(message = "支付状态说明不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "支付状态说明不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String payStatusText;
|
||||
|
||||
/**
|
||||
* 到货状态:1 未到货, 2 部分到货, 3 全部到货
|
||||
*/
|
||||
@NotNull(message = "到货状态:1 未到货, 2 部分到货, 3 全部到货不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "到货状态:1 未到货, 2 部分到货, 3 全部到货不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long statusShipped;
|
||||
|
||||
/**
|
||||
* 到货状态说明
|
||||
*/
|
||||
@NotBlank(message = "到货状态说明不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "到货状态说明不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String statusShippedText;
|
||||
|
||||
/**
|
||||
* 货物总价
|
||||
*/
|
||||
@NotNull(message = "货物总价不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "货物总价不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long amountTotal;
|
||||
|
||||
/**
|
||||
* 总金额
|
||||
*/
|
||||
@NotNull(message = "总金额不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "总金额不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long totalPrice;
|
||||
|
||||
/**
|
||||
* 币种符号
|
||||
*/
|
||||
@NotBlank(message = "币种符号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "币种符号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String icon;
|
||||
|
||||
/**
|
||||
* 付款状态:0 未申请, 1 已申请, 2 部分付款, 3 已付款
|
||||
*/
|
||||
@NotNull(message = "付款状态:0 未申请, 1 已申请, 2 部分付款, 3 已付款不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "付款状态:0 未申请, 1 已申请, 2 部分付款, 3 已付款不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long payStatus;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 其他费用
|
||||
*/
|
||||
@NotNull(message = "其他费用不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "其他费用不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long otherFee;
|
||||
|
||||
/**
|
||||
* 其他费用币种
|
||||
*/
|
||||
@NotBlank(message = "其他费用币种不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "其他费用币种不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String otherCurrency;
|
||||
|
||||
/**
|
||||
* 费用分摊方式:0 不分摊, 1 按金额, 2 按数量
|
||||
*/
|
||||
@NotNull(message = "费用分摊方式:0 不分摊, 1 按金额, 2 按数量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "费用分摊方式:0 不分摊, 1 按金额, 2 按数量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long feePartType;
|
||||
|
||||
/**
|
||||
* 运费
|
||||
*/
|
||||
@NotNull(message = "运费不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "运费不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long shippingPrice;
|
||||
|
||||
/**
|
||||
* 运费币种
|
||||
*/
|
||||
@NotBlank(message = "运费币种不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "运费币种不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String shippingCurrency;
|
||||
|
||||
/**
|
||||
* 采购币种
|
||||
*/
|
||||
@NotBlank(message = "采购币种不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "采购币种不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String purchaseCurrency;
|
||||
|
||||
/**
|
||||
* 采购汇率
|
||||
*/
|
||||
@NotNull(message = "采购汇率不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "采购汇率不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long purchaseRate;
|
||||
|
||||
/**
|
||||
* 采购总量
|
||||
*/
|
||||
@NotNull(message = "采购总量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "采购总量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long quantityTotal;
|
||||
|
||||
/**
|
||||
* 仓库ID
|
||||
*/
|
||||
@NotNull(message = "仓库ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "仓库ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long wid;
|
||||
|
||||
/**
|
||||
* 仓库名称
|
||||
*/
|
||||
@NotBlank(message = "仓库名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "仓库名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String wareHouseName;
|
||||
|
||||
/**
|
||||
* 仓库名(备份)
|
||||
*/
|
||||
@NotBlank(message = "仓库名(备份)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "仓库名(备份)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String wareHouseBakName;
|
||||
|
||||
/**
|
||||
* 入库量
|
||||
*/
|
||||
@NotNull(message = "入库量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "入库量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long quantityEntry;
|
||||
|
||||
/**
|
||||
* 实际采购量
|
||||
*/
|
||||
@NotNull(message = "实际采购量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "实际采购量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long quantityReal;
|
||||
|
||||
/**
|
||||
* 待到货量
|
||||
*/
|
||||
@NotNull(message = "待到货量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "待到货量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long quantityReceive;
|
||||
|
||||
/**
|
||||
* 采购方ID
|
||||
*/
|
||||
@NotNull(message = "采购方ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "采购方ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long purchaserId;
|
||||
|
||||
/**
|
||||
* 联系人
|
||||
*/
|
||||
@NotBlank(message = "联系人不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "联系人不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String contactPerson;
|
||||
|
||||
/**
|
||||
* 联系方式
|
||||
*/
|
||||
@NotBlank(message = "联系方式不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "联系方式不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String contactNumber;
|
||||
|
||||
/**
|
||||
* 结算方式:7 现结, 8 月结
|
||||
*/
|
||||
@NotNull(message = "结算方式:7 现结, 8 月结不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "结算方式:7 现结, 8 月结不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long settlementMethod;
|
||||
|
||||
/**
|
||||
* 结算描述
|
||||
*/
|
||||
@NotBlank(message = "结算描述不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotBlank(message = "结算描述不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String settlementDescription;
|
||||
|
||||
/**
|
||||
* 支付方式
|
||||
*/
|
||||
@NotNull(message = "支付方式不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "支付方式不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long paymentMethod;
|
||||
|
||||
/**
|
||||
* 交货天数
|
||||
*/
|
||||
@NotNull(message = "交货天数不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotNull(message = "交货天数不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long estDlvDays;
|
||||
|
||||
/**
|
||||
* 订单状态
|
||||
*/
|
||||
@NotBlank(message = "订单状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotBlank(message = "订单状态不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String orderStatus;
|
||||
|
||||
/**
|
||||
* 交货时间
|
||||
*/
|
||||
@NotNull(message = "交货时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotNull(message = "交货时间不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Date deliveryTime;
|
||||
|
||||
/**
|
||||
* 订单交付变动天数
|
||||
*/
|
||||
@NotNull(message = "订单交付变动天数不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
// @NotNull(message = "订单交付变动天数不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long dlvTimeVar;
|
||||
|
||||
|
||||
|
@ -0,0 +1,99 @@
|
||||
package org.asinkj.amz.domain.bo;
|
||||
|
||||
import org.asinkj.amz.domain.BizSendOrder;
|
||||
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
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-14
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = BizSendOrder.class, reverseConvertGenerate = false)
|
||||
public class BizSendOrderBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
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;
|
||||
|
||||
/**
|
||||
* 单箱产品数量
|
||||
*/
|
||||
@NotNull(message = "单箱产品数量不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long quantityPerBox;
|
||||
|
||||
/**
|
||||
* 箱数
|
||||
*/
|
||||
@NotNull(message = "箱数不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long boxCount;
|
||||
|
||||
/**
|
||||
* 箱子尺寸
|
||||
*/
|
||||
@NotBlank(message = "箱子尺寸不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String boxDimensions;
|
||||
|
||||
/**
|
||||
* 单箱重量
|
||||
*/
|
||||
@NotNull(message = "单箱重量不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long weightPerBox;
|
||||
|
||||
/**
|
||||
* 实际采购店铺
|
||||
*/
|
||||
// @NotBlank(message = "实际采购店铺不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String realStoreName;
|
||||
|
||||
/**
|
||||
* 发货状态(pending=未发货,confirm=确认发货, processing=发货中,completed=发货完成)
|
||||
*/
|
||||
// @NotBlank(message = "发货状态(pending=未发货,confirm=确认发货, processing=发货中,completed=发货完成)不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String sendStatus;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,138 @@
|
||||
package org.asinkj.amz.domain.bo;
|
||||
|
||||
import org.asinkj.amz.domain.BizShipForward;
|
||||
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;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
/**
|
||||
* 货件转发业务对象 biz_ship_forward
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-13
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = BizShipForward.class, reverseConvertGenerate = false)
|
||||
public class BizShipForwardBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* $column.columnComment
|
||||
*/
|
||||
// @NotNull(message = "$column.columnComment不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 采购单号
|
||||
*/
|
||||
@NotBlank(message = "采购单号不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String orderSn;
|
||||
|
||||
/**
|
||||
* 采购店铺名称
|
||||
*/
|
||||
@NotBlank(message = "采购店铺名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 产品唯一标识码
|
||||
*/
|
||||
// @NotBlank(message = "产品唯一标识码不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String sku;
|
||||
|
||||
/**
|
||||
* 产品全称
|
||||
*/
|
||||
// @NotBlank(message = "产品全称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String productName;
|
||||
|
||||
/**
|
||||
* 实际发货数量
|
||||
*/
|
||||
@NotNull(message = "实际发货数量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long quantitySend;
|
||||
|
||||
/**
|
||||
* 发货供应商名称
|
||||
*/
|
||||
@NotBlank(message = "发货供应商名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String outSupplierName;
|
||||
|
||||
/**
|
||||
* 发货供应商系统ID
|
||||
*/
|
||||
@NotNull(message = "发货供应商系统ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long outSupplierId;
|
||||
|
||||
/**
|
||||
* 收货供应商名称
|
||||
*/
|
||||
@NotBlank(message = "收货供应商名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String inSupplierName;
|
||||
|
||||
/**
|
||||
* 收货供应商系统ID
|
||||
*/
|
||||
@NotNull(message = "收货供应商系统ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long inSupplierId;
|
||||
|
||||
/**
|
||||
* 计划发货起始时间
|
||||
*/
|
||||
@NotNull(message = "计划发货起始时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date shipmentStart;
|
||||
|
||||
/**
|
||||
* 计划发货截止时间
|
||||
*/
|
||||
@NotNull(message = "计划发货截止时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date shipmentEnd;
|
||||
|
||||
/**
|
||||
* 订单跟进人姓名
|
||||
*/
|
||||
// @NotBlank(message = "订单跟进人姓名不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String trackerName;
|
||||
|
||||
/**
|
||||
* 订单跟进人系统ID
|
||||
*/
|
||||
// @NotNull(message = "订单跟进人系统ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long trackerId;
|
||||
|
||||
/**
|
||||
* 转发状态(pending=未转发,processing=转发中,completed=转发完成)
|
||||
*/
|
||||
// @NotBlank(message = "转发状态(pending=未转发,processing=转发中,completed=转发完成)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String fwdStatus;
|
||||
|
||||
/**
|
||||
* 发货时间
|
||||
*/
|
||||
// @NotNull(message = "发货时间不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Date sendTime;
|
||||
|
||||
|
||||
/**
|
||||
* 采购单子项ID
|
||||
*/
|
||||
@NotNull(message = "采购单子项ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long orderDetailId;
|
||||
|
||||
|
||||
@NotNull(message = "请求类型")
|
||||
private String type;
|
||||
|
||||
|
||||
}
|
@ -5,6 +5,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.asinkj.amz.domain.BizPurchaseOrder;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
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;
|
||||
@ -13,7 +15,7 @@ import lombok.Data;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
@ -54,6 +56,9 @@ public class BizPurchaseOrderVo implements Serializable {
|
||||
@ExcelProperty(value = "供应商名称")
|
||||
private String supplierName;
|
||||
|
||||
@ExcelProperty(value = "店铺名称")
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 采购员ID
|
||||
*/
|
||||
@ -333,4 +338,11 @@ public class BizPurchaseOrderVo implements Serializable {
|
||||
private Long dlvTimeVar;
|
||||
|
||||
|
||||
|
||||
|
||||
private List<BizPurchaseOrderItem> items;
|
||||
|
||||
private List<BizShipForward> forwardList;
|
||||
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,107 @@
|
||||
package org.asinkj.amz.domain.vo;
|
||||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.asinkj.amz.domain.BizSendOrder;
|
||||
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
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-14
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = BizSendOrder.class)
|
||||
public class BizSendOrderVo 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;
|
||||
|
||||
/**
|
||||
* 单箱产品数量
|
||||
*/
|
||||
@ExcelProperty(value = "单箱产品数量")
|
||||
private Long quantityPerBox;
|
||||
|
||||
/**
|
||||
* 箱数
|
||||
*/
|
||||
@ExcelProperty(value = "箱数")
|
||||
private Long boxCount;
|
||||
|
||||
/**
|
||||
* 箱子尺寸
|
||||
*/
|
||||
@ExcelProperty(value = "箱子尺寸")
|
||||
private String boxDimensions;
|
||||
|
||||
/**
|
||||
* 单箱重量
|
||||
*/
|
||||
@ExcelProperty(value = "单箱重量")
|
||||
private Long weightPerBox;
|
||||
|
||||
/**
|
||||
* 实际采购店铺
|
||||
*/
|
||||
@ExcelProperty(value = "实际采购店铺")
|
||||
private String realStoreName;
|
||||
|
||||
/**
|
||||
* 发货状态(pending=未发货,confirm=确认发货, processing=发货中,completed=发货完成)
|
||||
*/
|
||||
@ExcelProperty(value = "发货状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(dictType = "send_status")
|
||||
private String sendStatus;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,138 @@
|
||||
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;
|
||||
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_ship_forward
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-13
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = BizShipForward.class)
|
||||
public class BizShipForwardVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* $column.columnComment
|
||||
*/
|
||||
@ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "$column.readConverterExp()")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 采购单号
|
||||
*/
|
||||
@ExcelProperty(value = "采购单号")
|
||||
private String orderSn;
|
||||
|
||||
/**
|
||||
* 采购店铺名称
|
||||
*/
|
||||
@ExcelProperty(value = "采购店铺名称")
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 产品唯一标识码
|
||||
*/
|
||||
@ExcelProperty(value = "产品唯一标识码")
|
||||
private String sku;
|
||||
|
||||
/**
|
||||
* 产品全称
|
||||
*/
|
||||
@ExcelProperty(value = "产品全称")
|
||||
private String productName;
|
||||
|
||||
/**
|
||||
* 实际发货数量
|
||||
*/
|
||||
@ExcelProperty(value = "实际发货数量")
|
||||
private Long quantitySend;
|
||||
|
||||
/**
|
||||
* 发货供应商名称
|
||||
*/
|
||||
@ExcelProperty(value = "发货供应商名称")
|
||||
private String outSupplierName;
|
||||
|
||||
/**
|
||||
* 发货供应商系统ID
|
||||
*/
|
||||
@ExcelProperty(value = "发货供应商系统ID")
|
||||
private Long outSupplierId;
|
||||
|
||||
/**
|
||||
* 收货供应商名称
|
||||
*/
|
||||
@ExcelProperty(value = "收货供应商名称")
|
||||
private String inSupplierName;
|
||||
|
||||
/**
|
||||
* 收货供应商系统ID
|
||||
*/
|
||||
@ExcelProperty(value = "收货供应商系统ID")
|
||||
private Long inSupplierId;
|
||||
|
||||
/**
|
||||
* 计划发货起始时间
|
||||
*/
|
||||
@ExcelProperty(value = "计划发货起始时间")
|
||||
private Date shipmentStart;
|
||||
|
||||
/**
|
||||
* 计划发货截止时间
|
||||
*/
|
||||
@ExcelProperty(value = "计划发货截止时间")
|
||||
private Date shipmentEnd;
|
||||
|
||||
/**
|
||||
* 订单跟进人姓名
|
||||
*/
|
||||
@ExcelProperty(value = "订单跟进人姓名")
|
||||
private String trackerName;
|
||||
|
||||
/**
|
||||
* 订单跟进人系统ID
|
||||
*/
|
||||
@ExcelProperty(value = "订单跟进人系统ID")
|
||||
private Long trackerId;
|
||||
|
||||
/**
|
||||
* 转发状态(pending=未转发,processing=转发中,completed=转发完成)
|
||||
*/
|
||||
@ExcelProperty(value = "转发状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "pending=未转发,processing=转发中,completed=转发完成")
|
||||
private String fwdStatus;
|
||||
|
||||
/**
|
||||
* 发货时间
|
||||
*/
|
||||
@ExcelProperty(value = "发货时间")
|
||||
private Date sendTime;
|
||||
|
||||
/**
|
||||
* 采购单子项ID
|
||||
*/
|
||||
@ExcelProperty(value = "采购单子项ID")
|
||||
private Long orderDetailId;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package org.asinkj.amz.mapStruct;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import org.mapstruct.Named;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Component
|
||||
@Named("DateConvert")
|
||||
public class DateConvert {
|
||||
|
||||
|
||||
@Named("stringToDate")
|
||||
public Date stringToDate(String dateStr) {
|
||||
try {
|
||||
System.out.printf("dateStr:"+dateStr);
|
||||
return DateUtil.parse(dateStr, "yyyy-MM-dd HH:mm:ss");
|
||||
} catch (Exception e) {
|
||||
return null; // 或抛出自定义异常
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package org.asinkj.amz.mapper;
|
||||
|
||||
import org.asinkj.amz.domain.BizSendOrder;
|
||||
import org.asinkj.amz.domain.vo.BizSendOrderVo;
|
||||
import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 供应商创建的发货单Mapper接口
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-14
|
||||
*/
|
||||
public interface BizSendOrderMapper extends BaseMapperPlus<BizSendOrder, BizSendOrderVo> {
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package org.asinkj.amz.mapper;
|
||||
|
||||
import org.asinkj.amz.domain.BizShipForward;
|
||||
import org.asinkj.amz.domain.vo.BizShipForwardVo;
|
||||
import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 货件转发Mapper接口
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-13
|
||||
*/
|
||||
public interface BizShipForwardMapper extends BaseMapperPlus<BizShipForward, BizShipForwardVo> {
|
||||
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
package org.asinkj.amz.service;
|
||||
|
||||
import org.asinkj.amz.domain.BizSendOrder;
|
||||
import org.asinkj.amz.domain.vo.BizSendOrderVo;
|
||||
import org.asinkj.amz.domain.bo.BizSendOrderBo;
|
||||
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-05-14
|
||||
*/
|
||||
public interface IBizSendOrderService {
|
||||
|
||||
/**
|
||||
* 查询供应商创建的发货单
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 供应商创建的发货单
|
||||
*/
|
||||
BizSendOrderVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询供应商创建的发货单列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 供应商创建的发货单分页列表
|
||||
*/
|
||||
TableDataInfo<BizSendOrderVo> queryPageList(BizSendOrderBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的供应商创建的发货单列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 供应商创建的发货单列表
|
||||
*/
|
||||
List<BizSendOrderVo> queryList(BizSendOrderBo bo);
|
||||
|
||||
/**
|
||||
* 新增供应商创建的发货单
|
||||
*
|
||||
* @param bo 供应商创建的发货单
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(BizSendOrderBo bo);
|
||||
|
||||
/**
|
||||
* 修改供应商创建的发货单
|
||||
*
|
||||
* @param bo 供应商创建的发货单
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(BizSendOrderBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除供应商创建的发货单信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
package org.asinkj.amz.service;
|
||||
|
||||
import org.asinkj.amz.domain.BizShipForward;
|
||||
import org.asinkj.amz.domain.vo.BizShipForwardVo;
|
||||
import org.asinkj.amz.domain.bo.BizShipForwardBo;
|
||||
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-05-13
|
||||
*/
|
||||
public interface IBizShipForwardService {
|
||||
|
||||
/**
|
||||
* 查询货件转发
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 货件转发
|
||||
*/
|
||||
BizShipForwardVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询货件转发列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 货件转发分页列表
|
||||
*/
|
||||
TableDataInfo<BizShipForwardVo> queryPageList(BizShipForwardBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的货件转发列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 货件转发列表
|
||||
*/
|
||||
List<BizShipForwardVo> queryList(BizShipForwardBo bo);
|
||||
|
||||
/**
|
||||
* 新增货件转发
|
||||
*
|
||||
* @param bo 货件转发
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(BizShipForwardBo bo);
|
||||
|
||||
/**
|
||||
* 修改货件转发
|
||||
*
|
||||
* @param bo 货件转发
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(BizShipForwardBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除货件转发信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
@ -80,6 +80,8 @@ public interface ISysAmazonStoreService {
|
||||
|
||||
void pullPurchaseOrderData(String startDate, String endDate, LingxinCallback lingxinCallback);
|
||||
|
||||
void updatePurchaseOrderSeller(String startDate, String endDate, LingxinCallback lingxinCallback);
|
||||
|
||||
void pullAmzStaData(String startDate, String endDate, LingxinCallback lingxinCallback);
|
||||
|
||||
void pullAmzBoxData() throws Exception;
|
||||
|
@ -1,5 +1,12 @@
|
||||
package org.asinkj.amz.service.impl;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import org.asinkj.amz.domain.BizPurchaseOrderItem;
|
||||
import org.asinkj.amz.domain.BizShipForward;
|
||||
import org.asinkj.amz.mapper.BizPurchaseOrderItemMapper;
|
||||
import org.asinkj.amz.mapper.BizShipForwardMapper;
|
||||
import org.asinkj.amz.service.IBizPurchaseOrderItemService;
|
||||
import org.asinkj.common.core.utils.MapstructUtils;
|
||||
import org.asinkj.common.core.utils.StringUtils;
|
||||
import org.asinkj.common.mybatis.core.page.TableDataInfo;
|
||||
@ -8,6 +15,7 @@ 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.springframework.stereotype.Service;
|
||||
import org.asinkj.amz.domain.bo.BizPurchaseOrderBo;
|
||||
import org.asinkj.amz.domain.vo.BizPurchaseOrderVo;
|
||||
@ -16,10 +24,7 @@ import org.asinkj.amz.mapper.BizPurchaseOrderMapper;
|
||||
import org.asinkj.amz.service.IBizPurchaseOrderService;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -34,8 +39,12 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService {
|
||||
|
||||
private final BizPurchaseOrderMapper baseMapper;
|
||||
|
||||
// @Resource
|
||||
// private MapstructUtils mapstructUtils;
|
||||
@Resource
|
||||
private BizPurchaseOrderItemMapper purchaseOrderItemMapper;
|
||||
|
||||
@Resource
|
||||
private BizShipForwardMapper bizForwardMapper;
|
||||
;
|
||||
|
||||
/**
|
||||
* 查询采购单主
|
||||
@ -44,7 +53,7 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService {
|
||||
* @return 采购单主
|
||||
*/
|
||||
@Override
|
||||
public BizPurchaseOrderVo queryById(String orderSn){
|
||||
public BizPurchaseOrderVo queryById(String orderSn) {
|
||||
return baseMapper.selectVoById(orderSn);
|
||||
}
|
||||
|
||||
@ -62,7 +71,24 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService {
|
||||
List<BizPurchaseOrderVo> records = result.getRecords();
|
||||
Set<String> orderSnSet = records.stream().map(BizPurchaseOrderVo::getOrderSn).collect(Collectors.toSet());
|
||||
|
||||
LambdaQueryWrapper<BizPurchaseOrderItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.in(CollectionUtil.isNotEmpty(orderSnSet), BizPurchaseOrderItem::getOrderSn, orderSnSet);
|
||||
Map<String, List<BizPurchaseOrderItem>> itemMaps = purchaseOrderItemMapper.selectList(lambdaQueryWrapper).stream().collect(Collectors.groupingBy(BizPurchaseOrderItem::getOrderSn));
|
||||
|
||||
LambdaQueryWrapper<BizShipForward> bizShipForwardWrapper = new LambdaQueryWrapper<>();
|
||||
bizShipForwardWrapper.in(CollectionUtil.isNotEmpty(orderSnSet), BizShipForward::getOrderSn, orderSnSet);
|
||||
Map<String, List<BizShipForward>> bizShipForwardMap = bizForwardMapper.selectList(bizShipForwardWrapper).stream().collect(Collectors.groupingBy(BizShipForward::getOrderSn));
|
||||
|
||||
|
||||
for (BizPurchaseOrderVo record : records) {
|
||||
List<BizPurchaseOrderItem> bizPurchaseOrderItems = itemMaps.get(record.getOrderSn());
|
||||
if (CollectionUtil.isNotEmpty(bizPurchaseOrderItems)) {
|
||||
record.setItems(bizPurchaseOrderItems);
|
||||
}
|
||||
List<BizShipForward> bizShipForwards = bizShipForwardMap.get(record.getOrderSn());
|
||||
if (CollectionUtil.isNotEmpty(bizShipForwards)) {
|
||||
record.setForwardList(bizShipForwards);
|
||||
}
|
||||
|
||||
}
|
||||
return TableDataInfo.build(result);
|
||||
@ -132,6 +158,11 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService {
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getOrderStatus()), BizPurchaseOrder::getOrderStatus, bo.getOrderStatus());
|
||||
lqw.eq(bo.getDeliveryTime() != null, BizPurchaseOrder::getDeliveryTime, bo.getDeliveryTime());
|
||||
lqw.eq(bo.getDlvTimeVar() != null, BizPurchaseOrder::getDlvTimeVar, bo.getDlvTimeVar());
|
||||
if (StpUtil.hasRole("gongying")) {
|
||||
|
||||
lqw.eq(BizPurchaseOrder::getSupplierName, Objects.requireNonNull(LoginHelper.getLoginUser()).getNickname());
|
||||
|
||||
}
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@ -168,7 +199,7 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService {
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BizPurchaseOrder entity){
|
||||
private void validEntityBeforeSave(BizPurchaseOrder entity) {
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
@ -181,7 +212,7 @@ public class BizPurchaseOrderServiceImpl implements IBizPurchaseOrderService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
|
@ -0,0 +1,139 @@
|
||||
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.BizSendOrderBo;
|
||||
import org.asinkj.amz.domain.vo.BizSendOrderVo;
|
||||
import org.asinkj.amz.domain.BizSendOrder;
|
||||
import org.asinkj.amz.mapper.BizSendOrderMapper;
|
||||
import org.asinkj.amz.service.IBizSendOrderService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 供应商创建的发货单Service业务层处理
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-14
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class BizSendOrderServiceImpl implements IBizSendOrderService {
|
||||
|
||||
private final BizSendOrderMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询供应商创建的发货单
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 供应商创建的发货单
|
||||
*/
|
||||
@Override
|
||||
public BizSendOrderVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询供应商创建的发货单列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 供应商创建的发货单分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<BizSendOrderVo> queryPageList(BizSendOrderBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<BizSendOrder> lqw = buildQueryWrapper(bo);
|
||||
Page<BizSendOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的供应商创建的发货单列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 供应商创建的发货单列表
|
||||
*/
|
||||
@Override
|
||||
public List<BizSendOrderVo> queryList(BizSendOrderBo bo) {
|
||||
LambdaQueryWrapper<BizSendOrder> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<BizSendOrder> buildQueryWrapper(BizSendOrderBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<BizSendOrder> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getOrderSn()), BizSendOrder::getOrderSn, bo.getOrderSn());
|
||||
lqw.eq(bo.getSendDate() != null, BizSendOrder::getSendDate, bo.getSendDate());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getStoreName()), BizSendOrder::getStoreName, bo.getStoreName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProductName()), BizSendOrder::getProductName, bo.getProductName());
|
||||
lqw.eq(bo.getQuantitySend() != null, BizSendOrder::getQuantitySend, bo.getQuantitySend());
|
||||
lqw.eq(bo.getQuantityPerBox() != null, BizSendOrder::getQuantityPerBox, bo.getQuantityPerBox());
|
||||
lqw.eq(bo.getBoxCount() != null, BizSendOrder::getBoxCount, bo.getBoxCount());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBoxDimensions()), BizSendOrder::getBoxDimensions, bo.getBoxDimensions());
|
||||
lqw.eq(bo.getWeightPerBox() != null, BizSendOrder::getWeightPerBox, bo.getWeightPerBox());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getRealStoreName()), BizSendOrder::getRealStoreName, bo.getRealStoreName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSendStatus()), BizSendOrder::getSendStatus, bo.getSendStatus());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增供应商创建的发货单
|
||||
*
|
||||
* @param bo 供应商创建的发货单
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(BizSendOrderBo bo) {
|
||||
BizSendOrder add = MapstructUtils.convert(bo, BizSendOrder.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改供应商创建的发货单
|
||||
*
|
||||
* @param bo 供应商创建的发货单
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(BizSendOrderBo bo) {
|
||||
BizSendOrder update = MapstructUtils.convert(bo, BizSendOrder.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BizSendOrder entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除供应商创建的发货单信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
@ -0,0 +1,169 @@
|
||||
package org.asinkj.amz.service.impl;
|
||||
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
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.asinkj.system.api.RemoteUserService;
|
||||
import org.asinkj.system.api.model.LoginUser;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.asinkj.amz.domain.bo.BizShipForwardBo;
|
||||
import org.asinkj.amz.domain.vo.BizShipForwardVo;
|
||||
import org.asinkj.amz.domain.BizShipForward;
|
||||
import org.asinkj.amz.mapper.BizShipForwardMapper;
|
||||
import org.asinkj.amz.service.IBizShipForwardService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 货件转发Service业务层处理
|
||||
*
|
||||
* @author shuo hu
|
||||
* @date 2025-05-13
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class BizShipForwardServiceImpl implements IBizShipForwardService {
|
||||
|
||||
private final BizShipForwardMapper baseMapper;
|
||||
|
||||
|
||||
@DubboReference
|
||||
private RemoteUserService remoteUserService;
|
||||
|
||||
/**
|
||||
* 查询货件转发
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 货件转发
|
||||
*/
|
||||
@Override
|
||||
public BizShipForwardVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询货件转发列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 货件转发分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<BizShipForwardVo> queryPageList(BizShipForwardBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<BizShipForward> lqw = buildQueryWrapper(bo);
|
||||
Page<BizShipForwardVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的货件转发列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 货件转发列表
|
||||
*/
|
||||
@Override
|
||||
public List<BizShipForwardVo> queryList(BizShipForwardBo bo) {
|
||||
LambdaQueryWrapper<BizShipForward> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<BizShipForward> buildQueryWrapper(BizShipForwardBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<BizShipForward> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getOrderSn()), BizShipForward::getOrderSn, bo.getOrderSn());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getStoreName()), BizShipForward::getStoreName, bo.getStoreName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSku()), BizShipForward::getSku, bo.getSku());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProductName()), BizShipForward::getProductName, bo.getProductName());
|
||||
lqw.eq(bo.getQuantitySend() != null, BizShipForward::getQuantitySend, bo.getQuantitySend());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getOutSupplierName()), BizShipForward::getOutSupplierName, bo.getOutSupplierName());
|
||||
lqw.eq(bo.getOutSupplierId() != null, BizShipForward::getOutSupplierId, bo.getOutSupplierId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getInSupplierName()), BizShipForward::getInSupplierName, bo.getInSupplierName());
|
||||
lqw.eq(bo.getInSupplierId() != null, BizShipForward::getInSupplierId, bo.getInSupplierId());
|
||||
lqw.eq(bo.getShipmentStart() != null, BizShipForward::getShipmentStart, bo.getShipmentStart());
|
||||
lqw.eq(bo.getShipmentEnd() != null, BizShipForward::getShipmentEnd, bo.getShipmentEnd());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getTrackerName()), BizShipForward::getTrackerName, bo.getTrackerName());
|
||||
lqw.eq(bo.getTrackerId() != null, BizShipForward::getTrackerId, bo.getTrackerId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFwdStatus()), BizShipForward::getFwdStatus, bo.getFwdStatus());
|
||||
lqw.eq(bo.getSendTime() != null, BizShipForward::getSendTime, bo.getSendTime());
|
||||
if (!LoginHelper.isSuperAdmin()) {
|
||||
if ("shipForwardOut".equals(bo.getType())) {
|
||||
lqw.eq(BizShipForward::getOutSupplierId, LoginHelper.getUserId())
|
||||
.eq(BizShipForward::getFwdStatus, "pending");
|
||||
} else if ("shipForwardIn".equals(bo.getType())) {
|
||||
lqw.eq(BizShipForward::getInSupplierId, LoginHelper.getUserId())
|
||||
.eq(BizShipForward::getFwdStatus, "processing");
|
||||
} else if ("shipForward".equals(bo.getType())) {
|
||||
lqw.eq(BizShipForward::getTrackerId, LoginHelper.getUserId());
|
||||
}
|
||||
}
|
||||
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增货件转发
|
||||
*
|
||||
* @param bo 货件转发
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(BizShipForwardBo bo) {
|
||||
BizShipForward add = MapstructUtils.convert(bo, BizShipForward.class);
|
||||
add.setTrackerId(LoginHelper.getUserId());
|
||||
add.setTrackerName(LoginHelper.getLoginUser().getNickname());
|
||||
|
||||
LoginUser userInfoWithNickName = remoteUserService.getUserInfoWithNickName(bo.getOutSupplierName());
|
||||
add.setOutSupplierId(userInfoWithNickName.getUserId());
|
||||
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改货件转发
|
||||
*
|
||||
* @param bo 货件转发
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(BizShipForwardBo bo) {
|
||||
BizShipForward update = MapstructUtils.convert(bo, BizShipForward.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(BizShipForward entity) {
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除货件转发信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
@ -16,12 +16,8 @@ import okhttp3.Call;
|
||||
import okhttp3.Callback;
|
||||
import okhttp3.Response;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.asinkj.amz.domain.BizShipmentItem;
|
||||
import org.asinkj.amz.domain.BizShipmentPlan;
|
||||
import org.asinkj.amz.domain.BizShipmentTracking;
|
||||
import org.asinkj.amz.mapper.BizShipmentItemMapper;
|
||||
import org.asinkj.amz.mapper.BizShipmentPlanMapper;
|
||||
import org.asinkj.amz.mapper.BizShipmentTrackingMapper;
|
||||
import org.asinkj.amz.domain.*;
|
||||
import org.asinkj.amz.mapper.*;
|
||||
import org.asinkj.amz.service.LingxinCallback;
|
||||
import org.asinkj.asinking.entity.*;
|
||||
import org.asinkj.asinking.okhttp.AKRestClientBuild;
|
||||
@ -42,8 +38,6 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.asinkj.amz.domain.bo.SysAmazonStoreBo;
|
||||
import org.asinkj.amz.domain.vo.SysAmazonStoreVo;
|
||||
import org.asinkj.amz.domain.SysAmazonStore;
|
||||
import org.asinkj.amz.mapper.SysAmazonStoreMapper;
|
||||
import org.asinkj.amz.service.ISysAmazonStoreService;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.context.request.RequestAttributes;
|
||||
@ -86,6 +80,12 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService {
|
||||
@Resource
|
||||
private BizShipmentTrackingMapper bizShipmentTrackingMapper;
|
||||
|
||||
@Resource
|
||||
private BizPurchaseOrderMapper bizPurchaseOrderMapper;
|
||||
|
||||
@Resource
|
||||
private BizPurchaseOrderItemMapper bizPurchaseOrderItemMapper;
|
||||
|
||||
|
||||
@Value("${lingxing.appId}")
|
||||
private String appId;
|
||||
@ -517,7 +517,7 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService {
|
||||
queryParam.put("start_date", startDate);
|
||||
queryParam.put("end_date", endDate);
|
||||
|
||||
|
||||
RequestAttributes ra = RequestContextHolder.getRequestAttributes();
|
||||
HttpUtil.postWithParams("/erp/sc/routing/data/local_inventory/purchaseOrderList", queryParam, new Callback() {
|
||||
@Override
|
||||
public void onFailure(@NotNull Call call, @NotNull IOException e) {
|
||||
@ -526,16 +526,164 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
|
||||
String string = response.body().string();
|
||||
log.info("onResponse+{}", string);
|
||||
RequestContextHolder.setRequestAttributes(ra);
|
||||
|
||||
JSONObject jsonObject = JSONObject.parse(string);
|
||||
JSONArray data = jsonObject.getJSONArray("data");
|
||||
try {
|
||||
String string = response.body().string();
|
||||
log.info("onResponse+{}", string);
|
||||
|
||||
JSONObject jsonObject = JSONObject.parse(string);
|
||||
JSONArray data = jsonObject.getJSONArray("data");
|
||||
|
||||
|
||||
List<PurchaseOrderResponse.OrderData> list = data.toList(PurchaseOrderResponse.OrderData.class);
|
||||
log.info("list:{}", list);
|
||||
List<PurchaseOrderResponse.OrderData> list = data.toList(PurchaseOrderResponse.OrderData.class);
|
||||
log.info("list:{}", list);
|
||||
if (CollectionUtil.isEmpty(list)) {
|
||||
log.info("未获取到采购订单");
|
||||
return;
|
||||
}
|
||||
list = list.stream().filter(c -> !"外采".equals(c.getSupplierName())).collect(Collectors.toList());
|
||||
|
||||
Set<String> orderSns = list.stream().map(PurchaseOrderResponse.OrderData::getOrderSn).collect(Collectors.toSet());
|
||||
Set<Long> storeList = new HashSet<>();
|
||||
for (PurchaseOrderResponse.OrderData orderData : list) {
|
||||
|
||||
PurchaseOrderResponse.OrderData.ItemListItem itemListItem = orderData.getItemList().get(0);
|
||||
storeList.add(itemListItem.getSid());
|
||||
|
||||
}
|
||||
LambdaQueryWrapper<SysAmazonStore> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.in(SysAmazonStore::getSid, storeList);
|
||||
|
||||
Map<Long, SysAmazonStore> collect = baseMapper.selectList(queryWrapper).stream().collect(Collectors.toMap(SysAmazonStore::getSid, Function.identity()));
|
||||
|
||||
|
||||
List<BizPurchaseOrder> orders = new ArrayList<>();
|
||||
// List<BizPurchaseOrder> orders = MapstructUtils.convert(list, BizPurchaseOrder.class);
|
||||
List<BizPurchaseOrderItem> bizPurchaseOrderItems = new ArrayList<>();
|
||||
for (PurchaseOrderResponse.OrderData orderData : list) {
|
||||
BizPurchaseOrder order = MapstructUtils.convert(orderData, BizPurchaseOrder.class);
|
||||
List<BizPurchaseOrderItem> convert1 = MapstructUtils.convert(orderData.getItemList(), BizPurchaseOrderItem.class);
|
||||
convert1.forEach(item -> item.setOrderSn(orderData.getOrderSn()));
|
||||
BizPurchaseOrderItem bizPurchaseOrderItem = convert1.get(0);
|
||||
storeList.add(bizPurchaseOrderItem.getSid());
|
||||
bizPurchaseOrderItems.addAll(convert1);
|
||||
orders.add(order);
|
||||
SysAmazonStore sysAmazonStore = collect.get(bizPurchaseOrderItem.getSid());
|
||||
if (ObjectUtil.isNotEmpty(sysAmazonStore)) {
|
||||
order.setStoreName(sysAmazonStore.getStoreName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (CollectionUtil.isNotEmpty(orders)) {
|
||||
bizPurchaseOrderMapper.insertOrUpdateBatch(orders);
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(bizPurchaseOrderItems)) {
|
||||
bizPurchaseOrderItemMapper.insertOrUpdateBatch(bizPurchaseOrderItems);
|
||||
}
|
||||
|
||||
} finally {
|
||||
RequestContextHolder.resetRequestAttributes();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void updatePurchaseOrderSeller(String startDate, String endDate, LingxinCallback lingxinCallback) {
|
||||
|
||||
Map<String, Object> 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("string:{}", string);
|
||||
JSONObject jsonObject = JSONObject.parse(string);
|
||||
JSONObject data = jsonObject.getJSONObject("data");
|
||||
if (ObjectUtil.isEmpty(data)) {
|
||||
log.info("未获取到库存");
|
||||
return;
|
||||
}
|
||||
|
||||
JSONArray list = data.getJSONArray("list");
|
||||
if (CollectionUtil.isEmpty(list)) {
|
||||
log.info("未获取到库存");
|
||||
return;
|
||||
}
|
||||
log.info("data:{}", list);
|
||||
List<PurchaseOutsourceResponse.ListElement> listData = list.toList(PurchaseOutsourceResponse.ListElement.class);
|
||||
log.info("list:{}", listData);
|
||||
listData = listData.stream().filter(c -> !"外采".equals(c.getSupplierName())).collect(Collectors.toList());
|
||||
List<String> orderSns = new ArrayList<>();
|
||||
for (PurchaseOutsourceResponse.ListElement listDatum : listData) {
|
||||
List<PurchaseOutsourceResponse.Item> item = listDatum.getItem();
|
||||
Set<String> order = item.stream().map(PurchaseOutsourceResponse.Item::getPurchaseOrderSn).collect(Collectors.toSet());
|
||||
orderSns.addAll(order);
|
||||
}
|
||||
Map<String, PurchaseOutsourceResponse.ListElement> resultMap = listData.stream()
|
||||
.flatMap(listElement ->
|
||||
listElement.getItem().stream() // 遍历每个 ListElement 的 item 列表
|
||||
.filter(item -> item.getPurchaseOrderSn() != null) // 过滤掉 purchaseOrderSn 为 null 的项
|
||||
.map(item -> new java.util.AbstractMap.SimpleEntry<>(
|
||||
item.getPurchaseOrderSn(),
|
||||
listElement
|
||||
))
|
||||
)
|
||||
.collect(Collectors.toMap(
|
||||
Map.Entry::getKey,
|
||||
Map.Entry::getValue,
|
||||
(existingValue, newValue) -> existingValue
|
||||
));
|
||||
LambdaQueryWrapper<BizPurchaseOrder> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.in(BizPurchaseOrder::getOrderSn, orderSns);
|
||||
List<BizPurchaseOrder> purchaseOrders = bizPurchaseOrderMapper.selectList(queryWrapper);
|
||||
purchaseOrders = purchaseOrders.stream().filter(c -> StrUtil.isBlank(c.getStoreName())).collect(Collectors.toList());
|
||||
for (BizPurchaseOrder purchaseOrder : purchaseOrders) {
|
||||
PurchaseOutsourceResponse.ListElement listElement = resultMap.get(purchaseOrder.getOrderSn());
|
||||
if (ObjectUtil.isNotEmpty(listElement)) {
|
||||
purchaseOrder.setStoreName(listElement.getSellerName());
|
||||
}
|
||||
}
|
||||
bizPurchaseOrderMapper.updateById(purchaseOrders);
|
||||
//
|
||||
// Set<String> orderSns = list.stream().map(PurchaseOrderResponse.OrderData::getOrderSn).collect(Collectors.toSet());
|
||||
//
|
||||
//
|
||||
// List<BizPurchaseOrder> orders = MapstructUtils.convert(list, BizPurchaseOrder.class);
|
||||
// List<BizPurchaseOrderItem> bizPurchaseOrderItems = new ArrayList<>();
|
||||
// for (PurchaseOrderResponse.OrderData orderData : list) {
|
||||
// List<BizPurchaseOrderItem> convert1 = MapstructUtils.convert(orderData.getItemList(), BizPurchaseOrderItem.class);
|
||||
// convert1.forEach(item -> item.setOrderSn(orderData.getOrderSn()));
|
||||
// bizPurchaseOrderItems.addAll(convert1);
|
||||
// }
|
||||
// if (CollectionUtil.isNotEmpty(orders)) {
|
||||
// bizPurchaseOrderMapper.insertOrUpdateBatch(orders);
|
||||
// }
|
||||
// if (CollectionUtil.isNotEmpty(bizPurchaseOrderItems)) {
|
||||
// bizPurchaseOrderItemMapper.insertOrUpdateBatch(bizPurchaseOrderItems);
|
||||
// }
|
||||
|
||||
} finally {
|
||||
RequestContextHolder.resetRequestAttributes();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1,7 +1,14 @@
|
||||
package org.asinkj.asinking.entity;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import io.github.linpeilie.annotations.AutoMapping;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import org.asinkj.amz.domain.BizLogisticsChannel;
|
||||
import org.asinkj.amz.domain.BizPurchaseOrder;
|
||||
import org.asinkj.amz.domain.BizPurchaseOrderItem;
|
||||
import org.asinkj.amz.mapStruct.DateConvert;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@ -22,6 +29,7 @@ public class PurchaseOrderResponse {
|
||||
private List<OrderData> data;
|
||||
|
||||
@Data
|
||||
@AutoMapper(target = BizPurchaseOrder.class, uses = DateConvert.class)
|
||||
public static class OrderData {
|
||||
@JsonProperty("order_sn")
|
||||
private String orderSn;
|
||||
@ -49,9 +57,11 @@ public class PurchaseOrderResponse {
|
||||
private String lastRealname;
|
||||
|
||||
@JsonProperty("create_time")
|
||||
@AutoMapping(qualifiedByName = "stringToDate")
|
||||
private String createTime;
|
||||
|
||||
@JsonProperty("order_time")
|
||||
@AutoMapping(qualifiedByName = "stringToDate")
|
||||
private String orderTime;
|
||||
|
||||
@JsonProperty("payment")
|
||||
@ -61,12 +71,14 @@ public class PurchaseOrderResponse {
|
||||
private Integer auditorUid;
|
||||
|
||||
@JsonProperty("auditor_time")
|
||||
@AutoMapping(qualifiedByName = "stringToDate")
|
||||
private String auditorTime;
|
||||
|
||||
@JsonProperty("last_uid")
|
||||
private Integer lastUid;
|
||||
|
||||
@JsonProperty("last_time")
|
||||
@AutoMapping(qualifiedByName = "stringToDate")
|
||||
private String lastTime;
|
||||
|
||||
@JsonProperty("reason")
|
||||
@ -148,6 +160,7 @@ public class PurchaseOrderResponse {
|
||||
private Integer quantityReceive;
|
||||
|
||||
@JsonProperty("update_time")
|
||||
@AutoMapping(qualifiedByName = "stringToDate")
|
||||
private String updateTime;
|
||||
|
||||
@JsonProperty("purchaser_id")
|
||||
@ -188,6 +201,7 @@ public class PurchaseOrderResponse {
|
||||
}
|
||||
|
||||
@Data
|
||||
@AutoMapper(target = BizPurchaseOrderItem.class, uses = DateConvert.class)
|
||||
public static class ItemListItem {
|
||||
@JsonProperty("id")
|
||||
private Integer id;
|
||||
@ -214,7 +228,7 @@ public class PurchaseOrderResponse {
|
||||
private String fnsku;
|
||||
|
||||
@JsonProperty("sid")
|
||||
private String sid;
|
||||
private Long sid;
|
||||
|
||||
@JsonProperty("model")
|
||||
private String model;
|
||||
@ -250,6 +264,7 @@ public class PurchaseOrderResponse {
|
||||
private Integer quantityQcPrepare;
|
||||
|
||||
@JsonProperty("expect_arrive_time")
|
||||
@AutoMapping(qualifiedByName = "stringToDate")
|
||||
private String expectArriveTime;
|
||||
|
||||
@JsonProperty("remark")
|
||||
|
@ -0,0 +1,131 @@
|
||||
package org.asinkj.asinking.entity;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class PurchaseOutsourceResponse {
|
||||
@JsonProperty("code")
|
||||
private Integer code;
|
||||
|
||||
@JsonProperty("message")
|
||||
private String message;
|
||||
|
||||
@JsonProperty("error_details")
|
||||
private List<String> errorDetails;
|
||||
|
||||
@JsonProperty("request_id")
|
||||
private String requestId;
|
||||
|
||||
@JsonProperty("response_time")
|
||||
private String responseTime;
|
||||
|
||||
@JsonProperty("data")
|
||||
private ResData data;
|
||||
|
||||
@JsonProperty("total")
|
||||
private Integer total;
|
||||
|
||||
@Data
|
||||
public static class ResData {
|
||||
@JsonProperty("list")
|
||||
private List<ListElement> list;
|
||||
|
||||
@JsonProperty("total")
|
||||
private Integer total;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class ListElement {
|
||||
@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")
|
||||
private String createTime;
|
||||
|
||||
@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<String> msku;
|
||||
|
||||
@JsonProperty("plan_sn")
|
||||
private List<String> planSn;
|
||||
|
||||
@JsonProperty("seller_name")
|
||||
private String sellerName;
|
||||
|
||||
@JsonProperty("item")
|
||||
private List<Item> item;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class Item {
|
||||
@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")
|
||||
private String createTime;
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.asinkj.amz.mapper.BizSendOrderMapper">
|
||||
|
||||
</mapper>
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.asinkj.amz.mapper.BizShipForwardMapper">
|
||||
|
||||
</mapper>
|
@ -203,19 +203,32 @@ public class GenTableColumn extends BaseEntity {
|
||||
}
|
||||
|
||||
public String readConverterExp() {
|
||||
// 从列注释中提取括号内的内容(例如:"(0=男 1=女)")
|
||||
String remarks = StringUtils.substringBetween(this.columnComment, "(", ")");
|
||||
StringBuffer sb = new StringBuffer();
|
||||
|
||||
// 如果括号内有内容
|
||||
if (StringUtils.isNotEmpty(remarks)) {
|
||||
// 按空格分割各个键值对
|
||||
for (String value : remarks.split(" ")) {
|
||||
if (StringUtils.isNotEmpty(value)) {
|
||||
// 提取第一个字符作为键(如'0')
|
||||
Object startStr = value.subSequence(0, 1);
|
||||
// 剩余部分作为值(如'=男')
|
||||
String endStr = value.substring(1);
|
||||
sb.append(StringUtils.EMPTY).append(startStr).append("=").append(endStr).append(StringUtils.SEPARATOR);
|
||||
|
||||
// 拼接成 key=value 格式并添加分隔符
|
||||
sb.append(StringUtils.EMPTY).append(startStr)
|
||||
.append("=").append(endStr)
|
||||
.append(StringUtils.SEPARATOR);
|
||||
}
|
||||
}
|
||||
// 删除最后一个多余的分隔符后返回
|
||||
return sb.deleteCharAt(sb.length() - 1).toString();
|
||||
} else {
|
||||
// 如果没有括号内容则直接返回原始注释
|
||||
return this.columnComment;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.asinkj.amz.mapper.BizShipForwardMapper">
|
||||
|
||||
</mapper>
|
@ -1,6 +1,8 @@
|
||||
package org.asinkj.system.controller.system;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.dev33.satoken.secure.BCrypt;
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
@ -30,6 +32,8 @@ import org.asinkj.system.domain.bo.SysUserBo;
|
||||
import org.asinkj.system.domain.vo.*;
|
||||
import org.asinkj.system.listener.SysUserImportListener;
|
||||
import org.asinkj.system.service.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@ -37,6 +41,8 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
@ -49,6 +55,7 @@ import java.util.List;
|
||||
@RequestMapping("/user")
|
||||
public class SysUserController extends BaseController {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(SysUserController.class);
|
||||
private final ISysUserService userService;
|
||||
private final ISysRoleService roleService;
|
||||
private final ISysPostService postService;
|
||||
@ -298,4 +305,25 @@ public class SysUserController extends BaseController {
|
||||
return R.ok(userService.selectUserListByDept(deptId));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据角色串批量获取用户基础信息
|
||||
*
|
||||
* @param requestBody 用户角色串
|
||||
*/
|
||||
// @SaCheckPermission("system:user:query")
|
||||
@SaCheckRole(value = {"gengdan", "superadmin"}, mode = SaMode.OR)
|
||||
@PostMapping("/roleSelect") // 改为 PostMapping
|
||||
public R<List<SysUserVo>> selectUserByRoleIds(
|
||||
@RequestBody Map<String, Object> requestBody // 使用 @RequestBody 接收 JSON
|
||||
) {
|
||||
// 提取数组并转换类型
|
||||
List<Long> roleIds = ((List<?>) requestBody.get("roleIds")).stream()
|
||||
.map(obj -> Long.parseLong(obj.toString()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
log.info("接收到的 roleIds: {}", roleIds);
|
||||
return R.ok(userService.selectUserByRoleIds(roleIds));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package org.asinkj.system.dubbo;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Opt;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@ -12,7 +11,6 @@ import org.asinkj.common.core.exception.ServiceException;
|
||||
import org.asinkj.common.core.exception.user.UserException;
|
||||
import org.asinkj.common.core.utils.DateUtils;
|
||||
import org.asinkj.common.core.utils.MapstructUtils;
|
||||
import org.asinkj.common.core.utils.StreamUtils;
|
||||
import org.asinkj.common.core.utils.StringUtils;
|
||||
import org.asinkj.common.mybatis.helper.DataPermissionHelper;
|
||||
import org.asinkj.common.tenant.helper.TenantHelper;
|
||||
@ -73,6 +71,22 @@ public class RemoteUserServiceImpl implements RemoteUserService {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoginUser getUserInfoWithNickName(String nickName) throws UserException {
|
||||
|
||||
SysUserVo sysUser = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getNickName, nickName));
|
||||
if (ObjectUtil.isNull(sysUser)) {
|
||||
throw new UserException("user.not.exists", nickName);
|
||||
}
|
||||
if (UserStatus.DISABLE.getCode().equals(sysUser.getStatus())) {
|
||||
throw new UserException("user.blocked", nickName);
|
||||
}
|
||||
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
|
||||
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
|
||||
return buildLoginUser(sysUser);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过用户id查询用户信息
|
||||
*
|
||||
@ -288,10 +302,8 @@ public class RemoteUserServiceImpl implements RemoteUserService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void recordOpenId(Long userId, String openId){
|
||||
public void recordOpenId(Long userId, String openId) {
|
||||
SysUser sysUser = new SysUser();
|
||||
sysUser.setUserId(userId);
|
||||
sysUser.setOpenId(openId);
|
||||
@ -329,4 +341,12 @@ public class RemoteUserServiceImpl implements RemoteUserService {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<RemoteUserVo> selectUserByRoleIds(List<Long> roleIds) {
|
||||
List<SysUserVo> sysUserVos = userService.selectUserByRoleIds(roleIds);
|
||||
|
||||
return MapstructUtils.convert(sysUserVos, RemoteUserVo.class);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -89,4 +89,7 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
|
||||
int updateById(@Param(Constants.ENTITY) SysUser user);
|
||||
|
||||
List<String> selectUserOpenIdsByRoleIds(@Param("roleIds") List<Long> roleIds);
|
||||
|
||||
List<SysUserVo> selectUserByRoleIds(@Param("roleIds") List<Long> roleIds);
|
||||
|
||||
}
|
||||
|
@ -212,6 +212,8 @@ public interface ISysUserService {
|
||||
*/
|
||||
int deleteUserByIds(Long[] userIds);
|
||||
|
||||
List<SysUserVo> selectUserByRoleIds(List<Long> roleIds);
|
||||
|
||||
/**
|
||||
* 通过用户ID查询用户账户
|
||||
*
|
||||
|
@ -564,6 +564,11 @@ public class SysUserServiceImpl implements ISysUserService {
|
||||
return baseMapper.selectUserOpenIdsByRoleIds(roleIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysUserVo> selectUserByRoleIds(List<Long> roleIds) {
|
||||
return baseMapper.selectUserByRoleIds(roleIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过用户ID查询用户账户
|
||||
*
|
||||
|
@ -78,6 +78,16 @@
|
||||
</foreach>
|
||||
)
|
||||
</select>
|
||||
<select id="selectUserByRoleIds" resultType="org.asinkj.system.domain.vo.SysUserVo">
|
||||
select *
|
||||
from sys_user
|
||||
where user_id
|
||||
in (select user_id from sys_user_role where role_id in
|
||||
<foreach item="item" collection="roleIds" separator="," open="(" close=")" index="">
|
||||
#{item}
|
||||
</foreach>
|
||||
)
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
Loading…
x
Reference in New Issue
Block a user