feat(purchase-order): 实现采购订单分步提交功能
- 新增三个分步提交接口:savePurchaseOrderStep1、savePurchaseOrderStep2、savePurchaseOrderStep3 - 添加对应的服务层方法和网关方法支持分步提交逻辑 - 修改OrderDealerDO实体类,移除冗余字段并新增财务相关字段 - 更新OrderPackageDO和ShipOrderDO等实体类以支持新业务需求 - 调整DTO和VO对象,增加companyId和companyName等相关属性 - 优化查询条件构造逻辑,增强dealerRebateCustomer查询的灵活性 - 废弃原有的createPurchaseOrder接口,改为分步提交模式
This commit is contained in:
parent
2ac7654203
commit
61ebd14181
25
.lingma/rules/addFiled.md
Normal file
25
.lingma/rules/addFiled.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
trigger: manual
|
||||||
|
---
|
||||||
|
|
||||||
|
注意:
|
||||||
|
不用管 erp-turbo-svc 这个目录的代码
|
||||||
|
增加字段规则,举例如果需要在 AAAA.java 增加 BBB 字段
|
||||||
|
|
||||||
|
那么需要增加的地方有以下地方:
|
||||||
|
|
||||||
|
> 必须加
|
||||||
|
- AAAA.java
|
||||||
|
- AAAADO.java
|
||||||
|
- AAAAVO.java
|
||||||
|
- AAAAMapper.java
|
||||||
|
- AAAAMapper.xml
|
||||||
|
- AAAACreateCmd.java
|
||||||
|
|
||||||
|
> 可加可不加
|
||||||
|
- AAAAListQry.java
|
||||||
|
- AAAAPageQry.java
|
||||||
|
|
||||||
|
> 判断加不加
|
||||||
|
- AAAAConvert.java
|
||||||
|
- AAAAAssembler.java
|
||||||
@ -1,6 +1,7 @@
|
|||||||
package com.xunhong.erp.turbo.admin.controller;
|
package com.xunhong.erp.turbo.admin.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.dev33.satoken.annotation.SaCheckRole;
|
import cn.dev33.satoken.annotation.SaCheckRole;
|
||||||
import cn.dev33.satoken.annotation.SaMode;
|
import cn.dev33.satoken.annotation.SaMode;
|
||||||
import com.alibaba.cola.dto.MultiResponse;
|
import com.alibaba.cola.dto.MultiResponse;
|
||||||
@ -14,6 +15,7 @@ import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderListQry;
|
|||||||
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderPageQry;
|
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderPageQry;
|
||||||
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderShowQry;
|
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderShowQry;
|
||||||
import com.xunhong.erp.turbo.api.biz.dto.vo.PurchaseOrderVO;
|
import com.xunhong.erp.turbo.api.biz.dto.vo.PurchaseOrderVO;
|
||||||
|
import com.xunhong.erp.turbo.api.rbac.dto.constants.PermissionConstant;
|
||||||
import com.xunhong.erp.turbo.api.rbac.dto.constants.RoleConstant;
|
import com.xunhong.erp.turbo.api.rbac.dto.constants.RoleConstant;
|
||||||
import com.xunhong.erp.turbo.api.user.api.AdminServiceI;
|
import com.xunhong.erp.turbo.api.user.api.AdminServiceI;
|
||||||
import com.xunhong.erp.turbo.api.user.dto.qry.AdminShowQry;
|
import com.xunhong.erp.turbo.api.user.dto.qry.AdminShowQry;
|
||||||
@ -59,12 +61,31 @@ public class PurchaseOrderController {
|
|||||||
return SingleResponse.of(purchaseOrderService.countPurchaseOrderByState(purchaseOrderCountQry));
|
return SingleResponse.of(purchaseOrderService.countPurchaseOrderByState(purchaseOrderCountQry));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 分步提交第一步:车辆信息和经销商信息保存
|
||||||
@SaCheckLogin
|
@SaCheckLogin
|
||||||
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_PURCHASE_ORDER_CREATE})
|
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_PURCHASE_ORDER_CREATE})
|
||||||
@PostMapping("createPurchaseOrder")
|
@PostMapping("savePurchaseOrderStep1")
|
||||||
@Operation(summary = "创建采购订单(暂存)", method = "POST")
|
@Operation(summary = "采购订单第一步:车辆信息和经销商信息保存", method = "POST")
|
||||||
public SingleResponse<PurchaseOrderVO> createPurchaseOrder(@RequestBody @Validated PurchaseOrderCreateCmd purchaseOrderCreateCmd) {
|
public SingleResponse<PurchaseOrderVO> savePurchaseOrderStep1(@RequestBody @Validated PurchaseOrderStep1Cmd purchaseOrderStep1Cmd) {
|
||||||
return SingleResponse.of(purchaseOrderService.create(purchaseOrderCreateCmd));
|
return SingleResponse.of(purchaseOrderService.saveStep1(purchaseOrderStep1Cmd));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分步提交第二步:供应商信息保存
|
||||||
|
@SaCheckLogin
|
||||||
|
@PostMapping("savePurchaseOrderStep2")
|
||||||
|
@Operation(summary = "采购订单第二步:供应商信息保存", method = "POST")
|
||||||
|
public Response savePurchaseOrderStep2(@RequestBody @Validated PurchaseOrderStep2Cmd purchaseOrderStep2Cmd) {
|
||||||
|
purchaseOrderService.saveStep2(purchaseOrderStep2Cmd);
|
||||||
|
return Response.buildSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分步提交第三步:人工和辅料等费用信息保存
|
||||||
|
@SaCheckLogin
|
||||||
|
@PostMapping("savePurchaseOrderStep3")
|
||||||
|
@Operation(summary = "采购订单第三步:人工和辅料等费用信息保存", method = "POST")
|
||||||
|
public Response savePurchaseOrderStep3(@RequestBody @Validated PurchaseOrderStep3Cmd purchaseOrderStep3Cmd) {
|
||||||
|
purchaseOrderService.saveStep3(purchaseOrderStep3Cmd);
|
||||||
|
return Response.buildSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SaCheckLogin
|
@SaCheckLogin
|
||||||
@ -143,8 +164,19 @@ public class PurchaseOrderController {
|
|||||||
return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent());
|
return PageResponse.of(page.getRecords(), (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 注释掉原有的创建接口
|
||||||
|
@Deprecated
|
||||||
@SaCheckLogin
|
@SaCheckLogin
|
||||||
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_PURCHASE_ORDER_UPDATE})
|
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_PURCHASE_ORDER_CREATE})
|
||||||
|
@PostMapping("createPurchaseOrder")
|
||||||
|
@Operation(summary = "创建采购订单(暂存)", method = "POST")
|
||||||
|
public SingleResponse<PurchaseOrderVO> createPurchaseOrder(@RequestBody @Validated PurchaseOrderCreateCmd purchaseOrderCreateCmd) {
|
||||||
|
return SingleResponse.of(purchaseOrderService.create(purchaseOrderCreateCmd));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
@SaCheckLogin
|
||||||
|
// @SaCheckPermission(value = {PermissionConstant.MDB_BUSINESS_PURCHASE_ORDER_UPDATE})
|
||||||
@RequestMapping(value = "updatePurchaseOrder", method = {RequestMethod.PATCH, RequestMethod.PUT})
|
@RequestMapping(value = "updatePurchaseOrder", method = {RequestMethod.PATCH, RequestMethod.PUT})
|
||||||
@Operation(summary = "采购订单更新", method = "PATCH")
|
@Operation(summary = "采购订单更新", method = "PATCH")
|
||||||
public SingleResponse<PurchaseOrderVO> updatePurchaseOrder(@RequestBody @Validated PurchaseOrderUpdateCmd purchaseOrderUpdateCmd) {
|
public SingleResponse<PurchaseOrderVO> updatePurchaseOrder(@RequestBody @Validated PurchaseOrderUpdateCmd purchaseOrderUpdateCmd) {
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
package com.xunhong.erp.turbo.biz.app.executor.cmd;
|
||||||
|
|
||||||
|
import com.xunhong.erp.turbo.api.biz.dto.cmd.PurchaseOrderStep1Cmd;
|
||||||
|
import com.xunhong.erp.turbo.api.biz.dto.vo.PurchaseOrderVO;
|
||||||
|
import com.xunhong.erp.turbo.biz.app.assembler.PurchaseOrderAssembler;
|
||||||
|
import com.xunhong.erp.turbo.biz.domain.entity.PurchaseOrder;
|
||||||
|
import com.xunhong.erp.turbo.biz.domain.gateway.PurchaseOrderGateway;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author shenyifei
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class PurchaseOrderStep1CmdExe {
|
||||||
|
|
||||||
|
private final PurchaseOrderAssembler purchaseOrderAssembler;
|
||||||
|
private final PurchaseOrderGateway purchaseOrderGateway;
|
||||||
|
|
||||||
|
public PurchaseOrderVO execute(PurchaseOrderStep1Cmd purchaseOrderStep1Cmd) {
|
||||||
|
PurchaseOrder purchaseOrder = purchaseOrderGateway.saveStep1(purchaseOrderStep1Cmd);
|
||||||
|
return purchaseOrderAssembler.toPurchaseOrderVO(purchaseOrder);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package com.xunhong.erp.turbo.biz.app.executor.cmd;
|
||||||
|
|
||||||
|
import com.xunhong.erp.turbo.api.biz.dto.cmd.PurchaseOrderStep2Cmd;
|
||||||
|
import com.xunhong.erp.turbo.biz.domain.gateway.PurchaseOrderGateway;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author shenyifei
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class PurchaseOrderStep2CmdExe {
|
||||||
|
|
||||||
|
private final PurchaseOrderGateway purchaseOrderGateway;
|
||||||
|
|
||||||
|
public void execute(PurchaseOrderStep2Cmd purchaseOrderStep2Cmd) {
|
||||||
|
purchaseOrderGateway.saveStep2(purchaseOrderStep2Cmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package com.xunhong.erp.turbo.biz.app.executor.cmd;
|
||||||
|
|
||||||
|
import com.xunhong.erp.turbo.api.biz.dto.cmd.PurchaseOrderStep3Cmd;
|
||||||
|
import com.xunhong.erp.turbo.biz.domain.gateway.PurchaseOrderGateway;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author shenyifei
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class PurchaseOrderStep3CmdExe {
|
||||||
|
|
||||||
|
private final PurchaseOrderGateway purchaseOrderGateway;
|
||||||
|
|
||||||
|
public void execute(PurchaseOrderStep3Cmd purchaseOrderStep3Cmd) {
|
||||||
|
purchaseOrderGateway.saveStep3(purchaseOrderStep3Cmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -43,6 +43,11 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderServiceI {
|
|||||||
private final PurchaseOrderRejectFinalCmdExe purchaseOrderRejectFinalCmdExe;
|
private final PurchaseOrderRejectFinalCmdExe purchaseOrderRejectFinalCmdExe;
|
||||||
private final PurchaseOrderCountQryExe purchaseOrderCountQryExe;
|
private final PurchaseOrderCountQryExe purchaseOrderCountQryExe;
|
||||||
|
|
||||||
|
// 新增分步提交执行器
|
||||||
|
private final PurchaseOrderStep1CmdExe purchaseOrderStep1CmdExe;
|
||||||
|
private final PurchaseOrderStep2CmdExe purchaseOrderStep2CmdExe;
|
||||||
|
private final PurchaseOrderStep3CmdExe purchaseOrderStep3CmdExe;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PurchaseOrderVO create(PurchaseOrderCreateCmd purchaseOrderCreateCmd) {
|
public PurchaseOrderVO create(PurchaseOrderCreateCmd purchaseOrderCreateCmd) {
|
||||||
return purchaseOrderCreateCmdExe.execute(purchaseOrderCreateCmd);
|
return purchaseOrderCreateCmdExe.execute(purchaseOrderCreateCmd);
|
||||||
@ -107,5 +112,20 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderServiceI {
|
|||||||
public Long countPurchaseOrderByState(PurchaseOrderCountQry purchaseOrderCountQry) {
|
public Long countPurchaseOrderByState(PurchaseOrderCountQry purchaseOrderCountQry) {
|
||||||
return purchaseOrderCountQryExe.execute(purchaseOrderCountQry);
|
return purchaseOrderCountQryExe.execute(purchaseOrderCountQry);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
// 新增分步提交方法
|
||||||
|
@Override
|
||||||
|
public PurchaseOrderVO saveStep1(PurchaseOrderStep1Cmd purchaseOrderStep1Cmd) {
|
||||||
|
return purchaseOrderStep1CmdExe.execute(purchaseOrderStep1Cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveStep2(PurchaseOrderStep2Cmd purchaseOrderStep2Cmd) {
|
||||||
|
purchaseOrderStep2CmdExe.execute(purchaseOrderStep2Cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveStep3(PurchaseOrderStep3Cmd purchaseOrderStep3Cmd) {
|
||||||
|
purchaseOrderStep3CmdExe.execute(purchaseOrderStep3Cmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -56,6 +56,16 @@ public class ShipOrder extends DTO {
|
|||||||
*/
|
*/
|
||||||
private String warehouseName;
|
private String warehouseName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司ID
|
||||||
|
*/
|
||||||
|
private Long companyId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司名称
|
||||||
|
*/
|
||||||
|
private String companyName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车次号
|
* 车次号
|
||||||
*/
|
*/
|
||||||
@ -195,5 +205,4 @@ public class ShipOrder extends DTO {
|
|||||||
* 发货单子项表
|
* 发货单子项表
|
||||||
*/
|
*/
|
||||||
private List<ShipOrderPackage> shipOrderPackageList;
|
private List<ShipOrderPackage> shipOrderPackageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2,6 +2,7 @@ package com.xunhong.erp.turbo.biz.domain.entity;
|
|||||||
|
|
||||||
import com.alibaba.cola.domain.Entity;
|
import com.alibaba.cola.domain.Entity;
|
||||||
import com.alibaba.cola.dto.DTO;
|
import com.alibaba.cola.dto.DTO;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
@ -55,6 +56,16 @@ public class Supplier extends DTO {
|
|||||||
*/
|
*/
|
||||||
private Boolean status;
|
private Boolean status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人
|
||||||
|
*/
|
||||||
|
private String createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人姓名
|
||||||
|
*/
|
||||||
|
private String createdByName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -16,6 +16,11 @@ import java.util.List;
|
|||||||
public interface PurchaseOrderGateway {
|
public interface PurchaseOrderGateway {
|
||||||
PurchaseOrder save(PurchaseOrderCreateCmd purchaseOrderCreateCmd);
|
PurchaseOrder save(PurchaseOrderCreateCmd purchaseOrderCreateCmd);
|
||||||
|
|
||||||
|
// 新增分步提交方法
|
||||||
|
PurchaseOrder saveStep1(PurchaseOrderStep1Cmd purchaseOrderStep1Cmd);
|
||||||
|
void saveStep2(PurchaseOrderStep2Cmd purchaseOrderStep2Cmd);
|
||||||
|
void saveStep3(PurchaseOrderStep3Cmd purchaseOrderStep3Cmd);
|
||||||
|
|
||||||
IPage<PurchaseOrder> page(PurchaseOrderPageQry purchaseOrderPageQry);
|
IPage<PurchaseOrder> page(PurchaseOrderPageQry purchaseOrderPageQry);
|
||||||
|
|
||||||
List<PurchaseOrder> list(PurchaseOrderListQry purchaseOrderListQry);
|
List<PurchaseOrder> list(PurchaseOrderListQry purchaseOrderListQry);
|
||||||
@ -39,4 +44,4 @@ public interface PurchaseOrderGateway {
|
|||||||
void rejectFinal(PurchaseOrderRejectFinalCmd purchaseOrderRejectFinalCmd);
|
void rejectFinal(PurchaseOrderRejectFinalCmd purchaseOrderRejectFinalCmd);
|
||||||
|
|
||||||
Long countBy(PurchaseOrderCountQry purchaseOrderCountQry);
|
Long countBy(PurchaseOrderCountQry purchaseOrderCountQry);
|
||||||
}
|
}
|
||||||
@ -17,5 +17,7 @@ public interface OrderDealerConvert {
|
|||||||
@Mapping(target = "createdAt", ignore = true)
|
@Mapping(target = "createdAt", ignore = true)
|
||||||
OrderDealerDO toOrderDealerDO(OrderDealer orderDealer);
|
OrderDealerDO toOrderDealerDO(OrderDealer orderDealer);
|
||||||
|
|
||||||
|
@Mapping(target = "createdByName", ignore = true)
|
||||||
|
@Mapping(target = "createdBy", ignore = true)
|
||||||
OrderDealer toOrderDealer(OrderDealerDO orderDealerDO);
|
OrderDealer toOrderDealer(OrderDealerDO orderDealerDO);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,6 +25,8 @@ public interface OrderSupplierConvert {
|
|||||||
|
|
||||||
List<OrderSupplier> toOrderSupplierList(List<OrderSupplierDO> orderSupplierDOList);
|
List<OrderSupplier> toOrderSupplierList(List<OrderSupplierDO> orderSupplierDOList);
|
||||||
|
|
||||||
|
@Mapping(target = "createdByName", ignore = true)
|
||||||
|
@Mapping(target = "createdBy", ignore = true)
|
||||||
@Mapping(target = "orderPackageList", source = "orderPackageDOList")
|
@Mapping(target = "orderPackageList", source = "orderPackageDOList")
|
||||||
OrderSupplier toOrderSupplier(OrderSupplierDO orderSupplierDO);
|
OrderSupplier toOrderSupplier(OrderSupplierDO orderSupplierDO);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
package com.xunhong.erp.turbo.biz.infrastructure.convert;
|
package com.xunhong.erp.turbo.biz.infrastructure.convert;
|
||||||
|
|
||||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.PurchaseOrderCreateCmd;
|
import com.xunhong.erp.turbo.api.biz.dto.cmd.*;
|
||||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.PurchaseOrderUpdateCmd;
|
|
||||||
import com.xunhong.erp.turbo.biz.domain.entity.PurchaseOrder;
|
import com.xunhong.erp.turbo.biz.domain.entity.PurchaseOrder;
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.PurchaseOrderDO;
|
import com.xunhong.erp.turbo.biz.infrastructure.entity.PurchaseOrderDO;
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
@ -23,6 +22,18 @@ public interface PurchaseOrderConvert {
|
|||||||
@Mapping(target = "orderVehicle", source = "orderVehicleDO")
|
@Mapping(target = "orderVehicle", source = "orderVehicleDO")
|
||||||
PurchaseOrder toPurchaseOrder(PurchaseOrderDO purchaseOrderDO);
|
PurchaseOrder toPurchaseOrder(PurchaseOrderDO purchaseOrderDO);
|
||||||
|
|
||||||
|
@Mapping(target = "totalCost", ignore = true)
|
||||||
|
@Mapping(target = "supplierCount", ignore = true)
|
||||||
|
@Mapping(target = "saleAmount", ignore = true)
|
||||||
|
@Mapping(target = "rebate", ignore = true)
|
||||||
|
@Mapping(target = "pricingMethod", ignore = true)
|
||||||
|
@Mapping(target = "packageFee", ignore = true)
|
||||||
|
@Mapping(target = "orderRebateDO", ignore = true)
|
||||||
|
@Mapping(target = "orderCompanyDO", ignore = true)
|
||||||
|
@Mapping(target = "netWeight", ignore = true)
|
||||||
|
@Mapping(target = "grossWeight", ignore = true)
|
||||||
|
@Mapping(target = "freightCharge", ignore = true)
|
||||||
|
@Mapping(target = "avgUnitPrice", ignore = true)
|
||||||
@Mapping(target = "orderDealerDO", ignore = true)
|
@Mapping(target = "orderDealerDO", ignore = true)
|
||||||
@Mapping(target = "orderCostDOList", ignore = true)
|
@Mapping(target = "orderCostDOList", ignore = true)
|
||||||
@Mapping(target = "orderSn", ignore = true)
|
@Mapping(target = "orderSn", ignore = true)
|
||||||
@ -36,6 +47,18 @@ public interface PurchaseOrderConvert {
|
|||||||
@Mapping(target = "createdAt", ignore = true)
|
@Mapping(target = "createdAt", ignore = true)
|
||||||
PurchaseOrderDO toPurchaseOrderDO(PurchaseOrderCreateCmd purchaseOrderCreateCmd);
|
PurchaseOrderDO toPurchaseOrderDO(PurchaseOrderCreateCmd purchaseOrderCreateCmd);
|
||||||
|
|
||||||
|
@Mapping(target = "totalCost", ignore = true)
|
||||||
|
@Mapping(target = "supplierCount", ignore = true)
|
||||||
|
@Mapping(target = "saleAmount", ignore = true)
|
||||||
|
@Mapping(target = "rebate", ignore = true)
|
||||||
|
@Mapping(target = "pricingMethod", ignore = true)
|
||||||
|
@Mapping(target = "packageFee", ignore = true)
|
||||||
|
@Mapping(target = "orderRebateDO", ignore = true)
|
||||||
|
@Mapping(target = "orderCompanyDO", ignore = true)
|
||||||
|
@Mapping(target = "netWeight", ignore = true)
|
||||||
|
@Mapping(target = "grossWeight", ignore = true)
|
||||||
|
@Mapping(target = "freightCharge", ignore = true)
|
||||||
|
@Mapping(target = "avgUnitPrice", ignore = true)
|
||||||
@Mapping(target = "orderDealerDO", ignore = true)
|
@Mapping(target = "orderDealerDO", ignore = true)
|
||||||
@Mapping(target = "orderCostDOList", ignore = true)
|
@Mapping(target = "orderCostDOList", ignore = true)
|
||||||
@Mapping(target = "orderVehicleDO", ignore = true)
|
@Mapping(target = "orderVehicleDO", ignore = true)
|
||||||
@ -48,5 +71,37 @@ public interface PurchaseOrderConvert {
|
|||||||
@Mapping(target = "isDelete", ignore = true)
|
@Mapping(target = "isDelete", ignore = true)
|
||||||
@Mapping(target = "createdAt", ignore = true)
|
@Mapping(target = "createdAt", ignore = true)
|
||||||
void toPurchaseOrderDO(@MappingTarget PurchaseOrderDO purchaseOrderDO, PurchaseOrderUpdateCmd purchaseOrderUpdateCmd);
|
void toPurchaseOrderDO(@MappingTarget PurchaseOrderDO purchaseOrderDO, PurchaseOrderUpdateCmd purchaseOrderUpdateCmd);
|
||||||
|
|
||||||
|
PurchaseOrderStep1Cmd toPurchaseOrderStep1Cmd(PurchaseOrderCreateCmd purchaseOrderCreateCmd);
|
||||||
|
|
||||||
|
PurchaseOrderStep2Cmd toPurchaseOrderStep2Cmd(PurchaseOrderCreateCmd purchaseOrderCreateCmd);
|
||||||
|
|
||||||
|
PurchaseOrderStep3Cmd toPurchaseOrderStep3Cmd(PurchaseOrderCreateCmd purchaseOrderCreateCmd);
|
||||||
|
|
||||||
|
@Mapping(target = "originPrincipal", source = "createdByName")
|
||||||
|
@Mapping(target = "version", ignore = true)
|
||||||
|
@Mapping(target = "updatedAt", ignore = true)
|
||||||
|
@Mapping(target = "totalCost", ignore = true)
|
||||||
|
@Mapping(target = "supplierCount", ignore = true)
|
||||||
|
@Mapping(target = "state", ignore = true)
|
||||||
|
@Mapping(target = "saleAmount", ignore = true)
|
||||||
|
@Mapping(target = "remark", ignore = true)
|
||||||
|
@Mapping(target = "rebate", ignore = true)
|
||||||
|
@Mapping(target = "pricingMethod", ignore = true)
|
||||||
|
@Mapping(target = "packageFee", ignore = true)
|
||||||
|
@Mapping(target = "orderVehicleDO", ignore = true)
|
||||||
|
@Mapping(target = "orderSupplierDOList", ignore = true)
|
||||||
|
@Mapping(target = "orderSn", ignore = true)
|
||||||
|
@Mapping(target = "orderRebateDO", ignore = true)
|
||||||
|
@Mapping(target = "orderDealerDO", ignore = true)
|
||||||
|
@Mapping(target = "orderCostDOList", ignore = true)
|
||||||
|
@Mapping(target = "orderCompanyDO", ignore = true)
|
||||||
|
@Mapping(target = "netWeight", ignore = true)
|
||||||
|
@Mapping(target = "isDelete", ignore = true)
|
||||||
|
@Mapping(target = "grossWeight", ignore = true)
|
||||||
|
@Mapping(target = "freightCharge", ignore = true)
|
||||||
|
@Mapping(target = "createdAt", ignore = true)
|
||||||
|
@Mapping(target = "avgUnitPrice", ignore = true)
|
||||||
|
PurchaseOrderDO toPurchaseOrderDO(PurchaseOrderStep1Cmd purchaseOrderStep1Cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package com.xunhong.erp.turbo.biz.infrastructure.convert;
|
|||||||
|
|
||||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierCreateCmd;
|
import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierCreateCmd;
|
||||||
import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierUpdateCmd;
|
import com.xunhong.erp.turbo.api.biz.dto.cmd.SupplierUpdateCmd;
|
||||||
|
import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplier;
|
||||||
import com.xunhong.erp.turbo.biz.domain.entity.Supplier;
|
import com.xunhong.erp.turbo.biz.domain.entity.Supplier;
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.SupplierDO;
|
import com.xunhong.erp.turbo.biz.infrastructure.entity.SupplierDO;
|
||||||
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapper;
|
||||||
@ -28,5 +29,13 @@ public interface SupplierConvert {
|
|||||||
@Mapping(target = "isDelete", ignore = true)
|
@Mapping(target = "isDelete", ignore = true)
|
||||||
@Mapping(target = "createdAt", ignore = true)
|
@Mapping(target = "createdAt", ignore = true)
|
||||||
void toSupplierDO(@MappingTarget SupplierDO supplierDO, SupplierUpdateCmd supplierUpdateCmd);
|
void toSupplierDO(@MappingTarget SupplierDO supplierDO, SupplierUpdateCmd supplierUpdateCmd);
|
||||||
|
|
||||||
|
@Mapping(target = "version", ignore = true)
|
||||||
|
@Mapping(target = "updatedAt", ignore = true)
|
||||||
|
@Mapping(target = "status", ignore = true)
|
||||||
|
@Mapping(target = "remark", ignore = true)
|
||||||
|
@Mapping(target = "isDelete", ignore = true)
|
||||||
|
@Mapping(target = "createdAt", ignore = true)
|
||||||
|
SupplierDO toSupplierDO(OrderSupplier updatedSupplier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -85,90 +85,29 @@ public class OrderDealerDO extends BaseDO<OrderDealerDO> {
|
|||||||
*/
|
*/
|
||||||
@TableField(value = "document_types")
|
@TableField(value = "document_types")
|
||||||
private String documentTypes;
|
private String documentTypes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 账户ID
|
* 税费补贴
|
||||||
*/
|
*/
|
||||||
@TableField(value = "account_id")
|
@TableField(value = "tax_subsidy")
|
||||||
private Long accountId;
|
private BigDecimal taxSubsidy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公司名称
|
* 计提税金
|
||||||
*/
|
*/
|
||||||
@TableField(value = "company_name")
|
@TableField(value = "tax_provision")
|
||||||
private String companyName;
|
private BigDecimal taxProvision;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 税号
|
* 成本差异
|
||||||
*/
|
*/
|
||||||
@TableField(value = "tax_number")
|
@TableField(value = "cost_difference")
|
||||||
private String taxNumber;
|
private BigDecimal costDifference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行账号
|
* 利润分成
|
||||||
*/
|
*/
|
||||||
@TableField(value = "bank_account")
|
@TableField(value = "profit_sharing")
|
||||||
private String bankAccount;
|
private BigDecimal profitSharing;
|
||||||
|
|
||||||
/**
|
|
||||||
* 单位地址
|
|
||||||
*/
|
|
||||||
@TableField(value = "company_address")
|
|
||||||
private String companyAddress;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 电话
|
|
||||||
*/
|
|
||||||
@TableField(value = "phone")
|
|
||||||
private String phone;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 开户行
|
|
||||||
*/
|
|
||||||
@TableField(value = "opening_bank")
|
|
||||||
private String openingBank;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 仓库ID
|
|
||||||
*/
|
|
||||||
@TableField(value = "warehouse_id")
|
|
||||||
private Long warehouseId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 仓库名称
|
|
||||||
*/
|
|
||||||
@TableField(value = "warehouse_name")
|
|
||||||
private String warehouseName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 仓库地址
|
|
||||||
*/
|
|
||||||
@TableField(value = "warehouse_address")
|
|
||||||
private String warehouseAddress;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 联系人
|
|
||||||
*/
|
|
||||||
@TableField(value = "contact_person")
|
|
||||||
private String contactPerson;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 联系电话
|
|
||||||
*/
|
|
||||||
@TableField(value = "contact_phone")
|
|
||||||
private String contactPhone;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 收货人姓名
|
|
||||||
*/
|
|
||||||
@TableField(value = "receiver_name")
|
|
||||||
private String receiverName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 收货人电话
|
|
||||||
*/
|
|
||||||
@TableField(value = "receiver_phone")
|
|
||||||
private String receiverPhone;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -43,6 +43,12 @@ public class OrderPackageDO extends BaseDO<OrderPackageDO> {
|
|||||||
@TableField(value = "box_brand_name")
|
@TableField(value = "box_brand_name")
|
||||||
private String boxBrandName;
|
private String boxBrandName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 箱子品牌图片
|
||||||
|
*/
|
||||||
|
@TableField(value = "box_brand_image")
|
||||||
|
private String boxBrandImage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 箱子分类ID
|
* 箱子分类ID
|
||||||
*/
|
*/
|
||||||
@ -91,5 +97,4 @@ public class OrderPackageDO extends BaseDO<OrderPackageDO> {
|
|||||||
@TableField(value = "box_type")
|
@TableField(value = "box_type")
|
||||||
private OrderPackageBoxTypeEnum boxType;
|
private OrderPackageBoxTypeEnum boxType;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,6 +63,18 @@ public class ShipOrderDO extends BaseDO<ShipOrderDO> {
|
|||||||
@TableField(value = "warehouse_name")
|
@TableField(value = "warehouse_name")
|
||||||
private String warehouseName;
|
private String warehouseName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司ID
|
||||||
|
*/
|
||||||
|
@TableField(value = "company_id")
|
||||||
|
private Long companyId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司名称
|
||||||
|
*/
|
||||||
|
@TableField(value = "company_name")
|
||||||
|
private String companyName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车次号
|
* 车次号
|
||||||
*/
|
*/
|
||||||
@ -226,5 +238,4 @@ public class ShipOrderDO extends BaseDO<ShipOrderDO> {
|
|||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private List<ShipOrderItemDO> shipOrderItemDOList;
|
private List<ShipOrderItemDO> shipOrderItemDOList;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,6 +71,4 @@ public class ShipOrderPackageDO extends BaseDO<ShipOrderPackageDO> {
|
|||||||
*/
|
*/
|
||||||
@TableField(value = "total_weight")
|
@TableField(value = "total_weight")
|
||||||
private BigDecimal totalWeight;
|
private BigDecimal totalWeight;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -58,6 +58,18 @@ public class SupplierDO extends BaseDO<SupplierDO> {
|
|||||||
@TableField(value = "remark")
|
@TableField(value = "remark")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人ID
|
||||||
|
*/
|
||||||
|
@TableField(value = "created_by")
|
||||||
|
private Long createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人姓名
|
||||||
|
*/
|
||||||
|
@TableField(value = "created_by_name")
|
||||||
|
private String createdByName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 状态:1_启用;0_禁用;
|
* 状态:1_启用;0_禁用;
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -98,7 +98,11 @@ public class DealerRebateCustomerGatewayImpl implements DealerRebateCustomerGate
|
|||||||
@Override
|
@Override
|
||||||
public DealerRebateCustomer show(DealerRebateCustomerShowQry dealerRebateCustomerShowQry) {
|
public DealerRebateCustomer show(DealerRebateCustomerShowQry dealerRebateCustomerShowQry) {
|
||||||
LambdaQueryWrapper<DealerRebateCustomerDO> queryWrapper = Wrappers.lambdaQuery(DealerRebateCustomerDO.class);
|
LambdaQueryWrapper<DealerRebateCustomerDO> queryWrapper = Wrappers.lambdaQuery(DealerRebateCustomerDO.class);
|
||||||
queryWrapper.eq(DealerRebateCustomerDO::getCustomerId, dealerRebateCustomerShowQry.getCustomerId());
|
queryWrapper.eq(Objects.nonNull(dealerRebateCustomerShowQry.getCustomerId()), DealerRebateCustomerDO::getCustomerId, dealerRebateCustomerShowQry.getCustomerId());
|
||||||
|
queryWrapper.eq(Objects.nonNull(dealerRebateCustomerShowQry.getDealerId()), DealerRebateCustomerDO::getDealerId, dealerRebateCustomerShowQry.getDealerId());
|
||||||
|
queryWrapper.eq(Objects.nonNull(dealerRebateCustomerShowQry.getStatus()), DealerRebateCustomerDO::getStatus, dealerRebateCustomerShowQry.getStatus());
|
||||||
|
|
||||||
|
|
||||||
queryWrapper.last("limit 1");
|
queryWrapper.last("limit 1");
|
||||||
|
|
||||||
DealerRebateCustomerDO dealerRebateCustomerDO = dealerRebateCustomerMapper.selectOne(queryWrapper);
|
DealerRebateCustomerDO dealerRebateCustomerDO = dealerRebateCustomerMapper.selectOne(queryWrapper);
|
||||||
|
|||||||
@ -66,47 +66,17 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
|||||||
private final ShipOrderItemMapper shipOrderItemMapper;
|
private final ShipOrderItemMapper shipOrderItemMapper;
|
||||||
private final ShipOrderPackageMapper shipOrderPackageMapper;
|
private final ShipOrderPackageMapper shipOrderPackageMapper;
|
||||||
|
|
||||||
|
private final SupplierMapper supplierMapper;
|
||||||
|
private final SupplierConvert supplierConvert;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public PurchaseOrder save(PurchaseOrderCreateCmd purchaseOrderCreateCmd) {
|
public PurchaseOrder save(PurchaseOrderCreateCmd purchaseOrderCreateCmd) {
|
||||||
PurchaseOrderDO purchaseOrderDO = purchaseOrderConvert.toPurchaseOrderDO(purchaseOrderCreateCmd);
|
PurchaseOrder purchaseOrder = saveStep1(purchaseOrderConvert.toPurchaseOrderStep1Cmd(purchaseOrderCreateCmd));
|
||||||
purchaseOrderDO.setState(PurchaseOrderStateEnum.DRAFT);
|
purchaseOrderCreateCmd.setOrderId(purchaseOrder.getOrderId());
|
||||||
purchaseOrderDO.setOrderSn("CG" + generateShipOrderSn());
|
saveStep2(purchaseOrderConvert.toPurchaseOrderStep2Cmd(purchaseOrderCreateCmd));
|
||||||
purchaseOrderMapper.insert(purchaseOrderDO);
|
saveStep3(purchaseOrderConvert.toPurchaseOrderStep3Cmd(purchaseOrderCreateCmd));
|
||||||
|
return purchaseOrder;
|
||||||
// 订单运输信息
|
|
||||||
OrderVehicle orderVehicle = purchaseOrderCreateCmd.getOrderVehicle();
|
|
||||||
orderVehicle.setOrderId(purchaseOrderDO.getOrderId());
|
|
||||||
OrderVehicleDO orderVehicleDO = orderVehicleConvert.toOrderVehicleDO(orderVehicle);
|
|
||||||
orderVehicleMapper.insert(orderVehicleDO);
|
|
||||||
|
|
||||||
// 订单经销商信息
|
|
||||||
OrderDealer orderDealer = purchaseOrderCreateCmd.getOrderDealer();
|
|
||||||
orderDealer.setOrderId(purchaseOrderDO.getOrderId());
|
|
||||||
OrderDealerDO orderDealerDO = orderDealerConvert.toOrderDealerDO(orderDealer);
|
|
||||||
orderDealerMapper.insert(orderDealerDO);
|
|
||||||
|
|
||||||
// 订单供应商信息
|
|
||||||
purchaseOrderCreateCmd.getOrderSupplierList().forEach(orderSupplier -> {
|
|
||||||
orderSupplier.setOrderId(purchaseOrderDO.getOrderId());
|
|
||||||
OrderSupplierDO orderSupplierDO = orderSupplierConvert.toOrderSupplierDO(orderSupplier);
|
|
||||||
orderSupplierMapper.insert(orderSupplierDO);
|
|
||||||
|
|
||||||
// 订单包材信息
|
|
||||||
orderSupplier.getOrderPackageList().forEach(orderPackage -> {
|
|
||||||
orderPackage.setOrderSupplierId(orderSupplierDO.getOrderSupplierId());
|
|
||||||
OrderPackageDO orderPackageDO = orderPackageConvert.toOrderPackageDO(orderPackage);
|
|
||||||
orderPackageMapper.insert(orderPackageDO);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// 订单费用信息
|
|
||||||
purchaseOrderCreateCmd.getOrderCostList().forEach(orderCost -> {
|
|
||||||
orderCost.setOrderId(purchaseOrderDO.getOrderId());
|
|
||||||
orderCostMapper.insert(orderCostConvert.toOrderCostDO(orderCost));
|
|
||||||
});
|
|
||||||
|
|
||||||
return purchaseOrderConvert.toPurchaseOrder(purchaseOrderDO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -129,10 +99,9 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Objects.nonNull(purchaseOrderPageQry.getDealerId()) || Objects.nonNull(purchaseOrderPageQry.getDealerPaymentAccountId())) {
|
if (Objects.nonNull(purchaseOrderPageQry.getDealerId())) {
|
||||||
LambdaQueryWrapper<OrderDealerDO> queryWrapper1 = Wrappers.lambdaQuery(OrderDealerDO.class);
|
LambdaQueryWrapper<OrderDealerDO> queryWrapper1 = Wrappers.lambdaQuery(OrderDealerDO.class);
|
||||||
queryWrapper1.eq(Objects.nonNull(purchaseOrderPageQry.getDealerId()), OrderDealerDO::getDealerId, purchaseOrderPageQry.getDealerId());
|
queryWrapper1.eq(Objects.nonNull(purchaseOrderPageQry.getDealerId()), OrderDealerDO::getDealerId, purchaseOrderPageQry.getDealerId());
|
||||||
queryWrapper1.eq(Objects.nonNull(purchaseOrderPageQry.getDealerPaymentAccountId()), OrderDealerDO::getAccountId, purchaseOrderPageQry.getDealerPaymentAccountId());
|
|
||||||
List<OrderDealerDO> orderDealerDOList = orderDealerMapper.selectList(queryWrapper1);
|
List<OrderDealerDO> orderDealerDOList = orderDealerMapper.selectList(queryWrapper1);
|
||||||
|
|
||||||
if (CollUtil.isNotEmpty(orderDealerDOList)) {
|
if (CollUtil.isNotEmpty(orderDealerDOList)) {
|
||||||
@ -174,159 +143,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public PurchaseOrder update(PurchaseOrderUpdateCmd purchaseOrderUpdateCmd) {
|
public PurchaseOrder update(PurchaseOrderUpdateCmd purchaseOrderUpdateCmd) {
|
||||||
LambdaQueryWrapper<PurchaseOrderDO> queryWrapper = Wrappers.lambdaQuery(PurchaseOrderDO.class);
|
return save(purchaseOrderUpdateCmd);
|
||||||
queryWrapper.eq(PurchaseOrderDO::getOrderId, purchaseOrderUpdateCmd.getOrderId());
|
|
||||||
queryWrapper.last("limit 1");
|
|
||||||
|
|
||||||
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectOne(queryWrapper);
|
|
||||||
|
|
||||||
purchaseOrderConvert.toPurchaseOrderDO(purchaseOrderDO, purchaseOrderUpdateCmd);
|
|
||||||
purchaseOrderMapper.updateById(purchaseOrderDO);
|
|
||||||
|
|
||||||
// 更新车辆信息
|
|
||||||
OrderVehicle orderVehicle = purchaseOrderUpdateCmd.getOrderVehicle();
|
|
||||||
OrderVehicleDO orderVehicleDO = orderVehicleConvert.toOrderVehicleDO(orderVehicle);
|
|
||||||
orderVehicleDO.setOrderId(purchaseOrderDO.getOrderId());
|
|
||||||
orderVehicleMapper.updateById(orderVehicleDO);
|
|
||||||
|
|
||||||
// 更新经销商信息
|
|
||||||
OrderDealer orderDealer = purchaseOrderUpdateCmd.getOrderDealer();
|
|
||||||
orderDealer.setOrderId(purchaseOrderDO.getOrderId());
|
|
||||||
OrderDealerDO orderDealerDO = orderDealerConvert.toOrderDealerDO(orderDealer);
|
|
||||||
// 先尝试更新,如果不存在则插入
|
|
||||||
if (orderDealerDO.getOrderDealerId() != null) {
|
|
||||||
orderDealerMapper.updateById(orderDealerDO);
|
|
||||||
} else {
|
|
||||||
LambdaQueryWrapper<OrderDealerDO> dealerQueryWrapper = Wrappers.lambdaQuery(OrderDealerDO.class);
|
|
||||||
dealerQueryWrapper.eq(OrderDealerDO::getOrderId, purchaseOrderDO.getOrderId());
|
|
||||||
OrderDealerDO existingDealer = orderDealerMapper.selectOne(dealerQueryWrapper);
|
|
||||||
if (existingDealer != null) {
|
|
||||||
orderDealerDO.setOrderDealerId(existingDealer.getOrderDealerId());
|
|
||||||
orderDealerMapper.updateById(orderDealerDO);
|
|
||||||
} else {
|
|
||||||
orderDealerMapper.insert(orderDealerDO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新供应商信息(精细化处理)
|
|
||||||
// 获取现有的供应商列表
|
|
||||||
LambdaQueryWrapper<OrderSupplierDO> supplierQueryWrapper = Wrappers.lambdaQuery(OrderSupplierDO.class);
|
|
||||||
supplierQueryWrapper.eq(OrderSupplierDO::getOrderId, purchaseOrderDO.getOrderId());
|
|
||||||
List<OrderSupplierDO> existingSuppliers = orderSupplierMapper.selectList(supplierQueryWrapper);
|
|
||||||
|
|
||||||
// 获取更新的供应商列表
|
|
||||||
List<OrderSupplier> updatedSuppliers = purchaseOrderUpdateCmd.getOrderSupplierList();
|
|
||||||
|
|
||||||
// 将现有供应商映射到ID字典中便于查找
|
|
||||||
Map<Long, OrderSupplierDO> existingSupplierMap = existingSuppliers.stream()
|
|
||||||
.collect(Collectors.toMap(OrderSupplierDO::getOrderSupplierId, Function.identity()));
|
|
||||||
|
|
||||||
// 收集需要更新和新增的供应商
|
|
||||||
List<OrderSupplierDO> suppliersToInsert = new ArrayList<>();
|
|
||||||
List<OrderSupplierDO> suppliersToUpdate = new ArrayList<>();
|
|
||||||
|
|
||||||
for (OrderSupplier updatedSupplier : updatedSuppliers) {
|
|
||||||
updatedSupplier.setOrderId(purchaseOrderDO.getOrderId());
|
|
||||||
OrderSupplierDO supplierDO = orderSupplierConvert.toOrderSupplierDO(updatedSupplier);
|
|
||||||
|
|
||||||
if (updatedSupplier.getOrderSupplierId() != null && existingSupplierMap.containsKey(updatedSupplier.getOrderSupplierId())) {
|
|
||||||
// 更新已存在的供应商
|
|
||||||
supplierDO.setOrderSupplierId(updatedSupplier.getOrderSupplierId());
|
|
||||||
suppliersToUpdate.add(supplierDO);
|
|
||||||
// 从现有映射中移除,剩下的就是需要删除的
|
|
||||||
existingSupplierMap.remove(updatedSupplier.getOrderSupplierId());
|
|
||||||
} else {
|
|
||||||
// 新增供应商
|
|
||||||
suppliersToInsert.add(supplierDO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除不再需要的供应商
|
|
||||||
existingSupplierMap.values().forEach(supplier -> supplier.deleteById());
|
|
||||||
|
|
||||||
// 执行更新操作
|
|
||||||
suppliersToUpdate.forEach(orderSupplierMapper::updateById);
|
|
||||||
|
|
||||||
// 执行插入操作
|
|
||||||
suppliersToInsert.forEach(orderSupplierMapper::insert);
|
|
||||||
|
|
||||||
// 处理包材信息(对更新和新增的供应商)
|
|
||||||
List<OrderSupplierDO> allAffectedSuppliers = new ArrayList<>();
|
|
||||||
allAffectedSuppliers.addAll(suppliersToUpdate);
|
|
||||||
allAffectedSuppliers.addAll(suppliersToInsert);
|
|
||||||
|
|
||||||
for (OrderSupplierDO supplierDO : allAffectedSuppliers) {
|
|
||||||
// 查找对应的更新数据
|
|
||||||
OrderSupplier updatedSupplier = updatedSuppliers.stream()
|
|
||||||
.filter(s -> (s.getOrderSupplierId() != null && s.getOrderSupplierId().equals(supplierDO.getOrderSupplierId()))
|
|
||||||
|| (s.getOrderSupplierId() == null && supplierDO.getOrderSupplierId() != null
|
|
||||||
&& s.getSupplierId().equals(supplierDO.getSupplierId())))
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null);
|
|
||||||
|
|
||||||
if (updatedSupplier != null && updatedSupplier.getOrderPackageList() != null && !updatedSupplier.getOrderPackageList().isEmpty()) {
|
|
||||||
// 删除旧的包材信息
|
|
||||||
LambdaQueryWrapper<OrderPackageDO> packageDeleteWrapper = Wrappers.lambdaQuery(OrderPackageDO.class);
|
|
||||||
packageDeleteWrapper.eq(OrderPackageDO::getOrderSupplierId, supplierDO.getOrderSupplierId());
|
|
||||||
orderPackageMapper.delete(packageDeleteWrapper);
|
|
||||||
|
|
||||||
// 插入新的包材信息
|
|
||||||
for (OrderPackage orderPackage : updatedSupplier.getOrderPackageList()) {
|
|
||||||
orderPackage.setOrderSupplierId(supplierDO.getOrderSupplierId());
|
|
||||||
OrderPackageDO orderPackageDO = orderPackageConvert.toOrderPackageDO(orderPackage);
|
|
||||||
orderPackageMapper.insert(orderPackageDO);
|
|
||||||
}
|
|
||||||
} else if (updatedSupplier != null) {
|
|
||||||
// 如果更新的数据中包材列表为空,则删除所有包材信息
|
|
||||||
LambdaQueryWrapper<OrderPackageDO> packageDeleteWrapper = Wrappers.lambdaQuery(OrderPackageDO.class);
|
|
||||||
packageDeleteWrapper.eq(OrderPackageDO::getOrderSupplierId, supplierDO.getOrderSupplierId());
|
|
||||||
orderPackageMapper.delete(packageDeleteWrapper);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新费用信息(精细化处理)
|
|
||||||
// 获取现有的费用列表
|
|
||||||
LambdaQueryWrapper<OrderCostDO> costQueryWrapper = Wrappers.lambdaQuery(OrderCostDO.class);
|
|
||||||
costQueryWrapper.eq(OrderCostDO::getOrderId, purchaseOrderDO.getOrderId());
|
|
||||||
List<OrderCostDO> existingCosts = orderCostMapper.selectList(costQueryWrapper);
|
|
||||||
|
|
||||||
// 获取更新的费用列表
|
|
||||||
List<OrderCost> updatedCosts = purchaseOrderUpdateCmd.getOrderCostList();
|
|
||||||
|
|
||||||
// 将现有费用映射到ID字典中便于查找
|
|
||||||
Map<Long, OrderCostDO> existingCostMap = existingCosts.stream()
|
|
||||||
.collect(Collectors.toMap(OrderCostDO::getOrderCostId, Function.identity()));
|
|
||||||
|
|
||||||
// 收集需要更新和新增的费用
|
|
||||||
List<OrderCostDO> costsToInsert = new ArrayList<>();
|
|
||||||
List<OrderCostDO> costsToUpdate = new ArrayList<>();
|
|
||||||
|
|
||||||
for (OrderCost updatedCost : updatedCosts) {
|
|
||||||
updatedCost.setOrderId(purchaseOrderDO.getOrderId());
|
|
||||||
OrderCostDO costDO = orderCostConvert.toOrderCostDO(updatedCost);
|
|
||||||
|
|
||||||
if (updatedCost.getOrderCostId() != null && existingCostMap.containsKey(updatedCost.getOrderCostId())) {
|
|
||||||
// 更新已存在的费用
|
|
||||||
costDO.setOrderCostId(updatedCost.getOrderCostId());
|
|
||||||
costsToUpdate.add(costDO);
|
|
||||||
// 从现有映射中移除,剩下的就是需要删除的
|
|
||||||
existingCostMap.remove(updatedCost.getOrderCostId());
|
|
||||||
} else {
|
|
||||||
// 新增费用
|
|
||||||
costsToInsert.add(costDO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除不再需要的费用
|
|
||||||
existingCostMap.values().forEach(cost -> cost.deleteById());
|
|
||||||
|
|
||||||
// 执行更新操作
|
|
||||||
costsToUpdate.forEach(orderCostMapper::updateById);
|
|
||||||
|
|
||||||
// 执行插入操作
|
|
||||||
costsToInsert.forEach(orderCostMapper::insert);
|
|
||||||
|
|
||||||
return purchaseOrderConvert.toPurchaseOrder(purchaseOrderDO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -603,6 +420,7 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
|||||||
shipOrderDO.setDriverName(orderVehicleDO.getDriver());
|
shipOrderDO.setDriverName(orderVehicleDO.getDriver());
|
||||||
shipOrderDO.setDriverPhone(orderVehicleDO.getPhone());
|
shipOrderDO.setDriverPhone(orderVehicleDO.getPhone());
|
||||||
shipOrderDO.setShippingDate(orderVehicleDO.getDeliveryTime());
|
shipOrderDO.setShippingDate(orderVehicleDO.getDeliveryTime());
|
||||||
|
shipOrderDO.setShippingAddress(orderVehicleDO.getOrigin());
|
||||||
shipOrderDO.setFreightDebt(orderVehicleDO.getPrice());
|
shipOrderDO.setFreightDebt(orderVehicleDO.getPrice());
|
||||||
if (orderVehicleDO.getOpenStrawCurtain()) {
|
if (orderVehicleDO.getOpenStrawCurtain()) {
|
||||||
shipOrderDO.setStrawMatDebt(orderVehicleDO.getStrawCurtainPrice());
|
shipOrderDO.setStrawMatDebt(orderVehicleDO.getStrawCurtainPrice());
|
||||||
@ -612,16 +430,23 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
|||||||
shipOrderDO.setVehicleNo(orderVehicleDO.getVehicleNo());
|
shipOrderDO.setVehicleNo(orderVehicleDO.getVehicleNo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 从公司信息中获取相关信息
|
||||||
|
OrderCompanyDO orderCompanyDO = orderCompanyMapper.selectOne(
|
||||||
|
Wrappers.lambdaQuery(OrderCompanyDO.class)
|
||||||
|
.eq(OrderCompanyDO::getOrderId, purchaseOrderDO.getOrderId())
|
||||||
|
);
|
||||||
|
|
||||||
|
if (orderCompanyDO != null) {
|
||||||
|
shipOrderDO.setCompanyId(orderCompanyDO.getCompanyId());
|
||||||
|
shipOrderDO.setCompanyName(orderCompanyDO.getFullName());
|
||||||
|
}
|
||||||
|
|
||||||
// 从经销商信息中获取相关信息
|
// 从经销商信息中获取相关信息
|
||||||
OrderDealerDO orderDealerDO = orderDealerMapper.selectOne(
|
OrderDealerDO orderDealerDO = orderDealerMapper.selectOne(
|
||||||
Wrappers.lambdaQuery(OrderDealerDO.class)
|
Wrappers.lambdaQuery(OrderDealerDO.class)
|
||||||
.eq(OrderDealerDO::getOrderId, purchaseOrderDO.getOrderId())
|
.eq(OrderDealerDO::getOrderId, purchaseOrderDO.getOrderId())
|
||||||
);
|
);
|
||||||
|
|
||||||
if (orderDealerDO != null) {
|
|
||||||
shipOrderDO.setReceivingAddress(orderDealerDO.getWarehouseAddress());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设置其他基本信息
|
// 设置其他基本信息
|
||||||
shipOrderDO.setCreatedBy(purchaseOrderFinalApproveCmd.getCreatedBy());
|
shipOrderDO.setCreatedBy(purchaseOrderFinalApproveCmd.getCreatedBy());
|
||||||
shipOrderDO.setCreatedByName(purchaseOrderFinalApproveCmd.getCreatedByName());
|
shipOrderDO.setCreatedByName(purchaseOrderFinalApproveCmd.getCreatedByName());
|
||||||
@ -734,8 +559,6 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
|||||||
BigDecimal totalAmount = unitPrice.multiply(BigDecimal.valueOf(totalQuantity));
|
BigDecimal totalAmount = unitPrice.multiply(BigDecimal.valueOf(totalQuantity));
|
||||||
shipOrderPackageDO.setItemAmount(totalAmount);
|
shipOrderPackageDO.setItemAmount(totalAmount);
|
||||||
|
|
||||||
shipOrderPackageDO.setSingleWeight(shipOrderPackageDO.getTotalWeight().divide(shipOrderPackageDO.getUnitPrice(), 2, RoundingMode.HALF_UP));
|
|
||||||
|
|
||||||
// 计算总重量(如果有)
|
// 计算总重量(如果有)
|
||||||
BigDecimal totalWeight = packages.stream()
|
BigDecimal totalWeight = packages.stream()
|
||||||
.map(p -> {
|
.map(p -> {
|
||||||
@ -747,6 +570,8 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
|||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
shipOrderPackageDO.setTotalWeight(totalWeight);
|
shipOrderPackageDO.setTotalWeight(totalWeight);
|
||||||
|
|
||||||
|
shipOrderPackageDO.setSingleWeight(shipOrderPackageDO.getTotalWeight().divide(shipOrderPackageDO.getUnitPrice(), 2, RoundingMode.HALF_UP));
|
||||||
|
|
||||||
shipOrderPackageMapper.insert(shipOrderPackageDO);
|
shipOrderPackageMapper.insert(shipOrderPackageDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -832,5 +657,269 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
|
|||||||
queryWrapper.eq(PurchaseOrderDO::getState, purchaseOrderCountQry.getState());
|
queryWrapper.eq(PurchaseOrderDO::getState, purchaseOrderCountQry.getState());
|
||||||
return purchaseOrderMapper.selectCount(queryWrapper);
|
return purchaseOrderMapper.selectCount(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public PurchaseOrder saveStep1(PurchaseOrderStep1Cmd purchaseOrderStep1Cmd) {
|
||||||
|
PurchaseOrderDO purchaseOrderDO;
|
||||||
|
|
||||||
|
// 如果订单ID为空,则创建新订单
|
||||||
|
if (purchaseOrderStep1Cmd.getOrderId() == null) {
|
||||||
|
purchaseOrderDO = purchaseOrderConvert.toPurchaseOrderDO(purchaseOrderStep1Cmd);
|
||||||
|
purchaseOrderDO.setState(PurchaseOrderStateEnum.DRAFT);
|
||||||
|
purchaseOrderDO.setOrderSn("CG" + generateShipOrderSn());
|
||||||
|
purchaseOrderMapper.insert(purchaseOrderDO);
|
||||||
|
} else {
|
||||||
|
// 否则更新现有订单
|
||||||
|
LambdaQueryWrapper<PurchaseOrderDO> queryWrapper = Wrappers.lambdaQuery(PurchaseOrderDO.class);
|
||||||
|
queryWrapper.eq(PurchaseOrderDO::getOrderId, purchaseOrderStep1Cmd.getOrderId());
|
||||||
|
queryWrapper.select(PurchaseOrderDO::getOrderId, PurchaseOrderDO::getActive);
|
||||||
|
queryWrapper.last("limit 1");
|
||||||
|
purchaseOrderDO = purchaseOrderMapper.selectOne(queryWrapper);
|
||||||
|
purchaseOrderDO.setActive(purchaseOrderStep1Cmd.getActive());
|
||||||
|
purchaseOrderMapper.updateById(purchaseOrderDO);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保存或更新车辆信息
|
||||||
|
OrderVehicle orderVehicle = purchaseOrderStep1Cmd.getOrderVehicle();
|
||||||
|
orderVehicle.setOrderId(purchaseOrderDO.getOrderId());
|
||||||
|
OrderVehicleDO orderVehicleDO = orderVehicleConvert.toOrderVehicleDO(orderVehicle);
|
||||||
|
|
||||||
|
if (orderVehicle.getVehicleId() != null) {
|
||||||
|
orderVehicleMapper.updateById(orderVehicleDO);
|
||||||
|
} else {
|
||||||
|
// 检查是否已存在车辆信息
|
||||||
|
LambdaQueryWrapper<OrderVehicleDO> vehicleQueryWrapper = Wrappers.lambdaQuery(OrderVehicleDO.class);
|
||||||
|
vehicleQueryWrapper.eq(OrderVehicleDO::getOrderId, purchaseOrderDO.getOrderId());
|
||||||
|
OrderVehicleDO existingVehicle = orderVehicleMapper.selectOne(vehicleQueryWrapper);
|
||||||
|
|
||||||
|
if (existingVehicle != null) {
|
||||||
|
orderVehicleDO.setVehicleId(existingVehicle.getVehicleId());
|
||||||
|
orderVehicleMapper.updateById(orderVehicleDO);
|
||||||
|
} else {
|
||||||
|
orderVehicleMapper.insert(orderVehicleDO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保存或更新经销商信息
|
||||||
|
OrderDealer orderDealer = purchaseOrderStep1Cmd.getOrderDealer();
|
||||||
|
orderDealer.setOrderId(purchaseOrderDO.getOrderId());
|
||||||
|
OrderDealerDO orderDealerDO = orderDealerConvert.toOrderDealerDO(orderDealer);
|
||||||
|
|
||||||
|
if (orderDealer.getOrderDealerId() != null) {
|
||||||
|
orderDealerMapper.updateById(orderDealerDO);
|
||||||
|
} else {
|
||||||
|
// 检查是否已存在经销商信息
|
||||||
|
LambdaQueryWrapper<OrderDealerDO> dealerQueryWrapper = Wrappers.lambdaQuery(OrderDealerDO.class);
|
||||||
|
dealerQueryWrapper.eq(OrderDealerDO::getOrderId, purchaseOrderDO.getOrderId());
|
||||||
|
OrderDealerDO existingDealer = orderDealerMapper.selectOne(dealerQueryWrapper);
|
||||||
|
|
||||||
|
if (existingDealer != null) {
|
||||||
|
orderDealerDO.setOrderDealerId(existingDealer.getOrderDealerId());
|
||||||
|
orderDealerMapper.updateById(orderDealerDO);
|
||||||
|
} else {
|
||||||
|
orderDealerMapper.insert(orderDealerDO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return purchaseOrderConvert.toPurchaseOrder(purchaseOrderDO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void saveStep2(PurchaseOrderStep2Cmd purchaseOrderStep2Cmd) {
|
||||||
|
Long orderId = purchaseOrderStep2Cmd.getOrderId();
|
||||||
|
|
||||||
|
// 否则更新现有订单
|
||||||
|
LambdaQueryWrapper<PurchaseOrderDO> queryWrapper = Wrappers.lambdaQuery(PurchaseOrderDO.class);
|
||||||
|
queryWrapper.eq(PurchaseOrderDO::getOrderId, orderId);
|
||||||
|
queryWrapper.select(PurchaseOrderDO::getOrderId, PurchaseOrderDO::getActive);
|
||||||
|
queryWrapper.last("limit 1");
|
||||||
|
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectOne(queryWrapper);
|
||||||
|
purchaseOrderDO.setActive(purchaseOrderStep2Cmd.getActive());
|
||||||
|
purchaseOrderMapper.updateById(purchaseOrderDO);
|
||||||
|
|
||||||
|
// 更新供应商信息(精细化处理)
|
||||||
|
// 获取现有的供应商列表
|
||||||
|
LambdaQueryWrapper<OrderSupplierDO> supplierQueryWrapper = Wrappers.lambdaQuery(OrderSupplierDO.class);
|
||||||
|
supplierQueryWrapper.eq(OrderSupplierDO::getOrderId, orderId);
|
||||||
|
List<OrderSupplierDO> existingSuppliers = orderSupplierMapper.selectList(supplierQueryWrapper);
|
||||||
|
|
||||||
|
// 获取更新的供应商列表
|
||||||
|
List<OrderSupplier> updatedSuppliers = purchaseOrderStep2Cmd.getOrderSupplierList();
|
||||||
|
|
||||||
|
// 将现有供应商映射到ID字典中便于查找
|
||||||
|
Map<Long, OrderSupplierDO> existingOrderSupplierMap = existingSuppliers.stream()
|
||||||
|
.collect(Collectors.toMap(OrderSupplierDO::getSupplierId, Function.identity()));
|
||||||
|
|
||||||
|
// 将更新后的供应商映射到ID字典中便于查找
|
||||||
|
Map<Long, Long> existingSupplierMap = existingSuppliers.stream().collect(Collectors.toMap(OrderSupplierDO::getSupplierId, OrderSupplierDO::getOrderSupplierId));
|
||||||
|
|
||||||
|
// 收集需要更新和新增的供应商
|
||||||
|
List<OrderSupplierDO> suppliersToInsert = new ArrayList<>();
|
||||||
|
List<OrderSupplierDO> suppliersToUpdate = new ArrayList<>();
|
||||||
|
|
||||||
|
for (OrderSupplier updatedSupplier : updatedSuppliers) {
|
||||||
|
// 检查供应商ID是否为空,如果为空则创建新的供应商
|
||||||
|
if (Objects.isNull(updatedSupplier.getSupplierId())) {
|
||||||
|
SupplierDO supplierDO1 = supplierConvert.toSupplierDO(updatedSupplier);
|
||||||
|
supplierDO1.setStatus(Boolean.TRUE);
|
||||||
|
supplierDO1.setCreatedBy(purchaseOrderStep2Cmd.getCreatedBy());
|
||||||
|
supplierDO1.setCreatedByName(purchaseOrderStep2Cmd.getCreatedByName());
|
||||||
|
supplierMapper.insert(supplierDO1);
|
||||||
|
|
||||||
|
updatedSupplier.setSupplierId(supplierDO1.getSupplierId());
|
||||||
|
}
|
||||||
|
|
||||||
|
updatedSupplier.setOrderId(orderId);
|
||||||
|
OrderSupplierDO orderSupplierDO = orderSupplierConvert.toOrderSupplierDO(updatedSupplier);
|
||||||
|
|
||||||
|
if (updatedSupplier.getSupplierId() != null && existingOrderSupplierMap.containsKey(updatedSupplier.getSupplierId())) {
|
||||||
|
// 更新已存在的供应商
|
||||||
|
orderSupplierDO.setSupplierId(updatedSupplier.getSupplierId());
|
||||||
|
|
||||||
|
Long orderSupplierId = existingSupplierMap.get(updatedSupplier.getSupplierId());
|
||||||
|
orderSupplierDO.setOrderSupplierId(orderSupplierId);
|
||||||
|
updatedSupplier.setOrderSupplierId(orderSupplierId);
|
||||||
|
|
||||||
|
suppliersToUpdate.add(orderSupplierDO);
|
||||||
|
// 从现有映射中移除,剩下的就是需要删除的
|
||||||
|
existingOrderSupplierMap.remove(updatedSupplier.getSupplierId());
|
||||||
|
} else {
|
||||||
|
// 新增供应商
|
||||||
|
suppliersToInsert.add(orderSupplierDO);
|
||||||
|
updatedSupplier.setOrderSupplierId(orderSupplierDO.getOrderSupplierId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除不再需要的供应商
|
||||||
|
existingOrderSupplierMap.values().forEach(supplier -> supplier.deleteById());
|
||||||
|
|
||||||
|
// 执行更新操作
|
||||||
|
suppliersToUpdate.forEach(orderSupplierMapper::updateById);
|
||||||
|
|
||||||
|
// 执行插入操作
|
||||||
|
suppliersToInsert.forEach(orderSupplierMapper::insert);
|
||||||
|
|
||||||
|
// 第三步处理包材
|
||||||
|
if (purchaseOrderStep2Cmd.getActive() == 4) {
|
||||||
|
// 处理包材信息(对更新和新增的供应商)
|
||||||
|
List<OrderSupplierDO> allAffectedSuppliers = new ArrayList<>();
|
||||||
|
allAffectedSuppliers.addAll(suppliersToUpdate);
|
||||||
|
allAffectedSuppliers.addAll(suppliersToInsert);
|
||||||
|
|
||||||
|
for (OrderSupplierDO supplierDO : allAffectedSuppliers) {
|
||||||
|
// 查找对应的更新数据
|
||||||
|
OrderSupplier updatedSupplier = updatedSuppliers.stream()
|
||||||
|
.filter(s -> (s.getOrderSupplierId() != null && s.getOrderSupplierId().equals(supplierDO.getOrderSupplierId()))
|
||||||
|
|| (s.getOrderSupplierId() == null && supplierDO.getOrderSupplierId() != null
|
||||||
|
&& s.getSupplierId().equals(supplierDO.getSupplierId())))
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
|
||||||
|
if (updatedSupplier != null && updatedSupplier.getOrderPackageList() != null && !updatedSupplier.getOrderPackageList().isEmpty()) {
|
||||||
|
// 获取现有的包材信息
|
||||||
|
LambdaQueryWrapper<OrderPackageDO> packageQueryWrapper = Wrappers.lambdaQuery(OrderPackageDO.class);
|
||||||
|
packageQueryWrapper.eq(OrderPackageDO::getOrderSupplierId, supplierDO.getOrderSupplierId());
|
||||||
|
List<OrderPackageDO> existingPackages = orderPackageMapper.selectList(packageQueryWrapper);
|
||||||
|
|
||||||
|
// 将现有包材映射到ID字典中便于查找
|
||||||
|
Map<Long, OrderPackageDO> existingPackageMap = existingPackages.stream()
|
||||||
|
.collect(Collectors.toMap(OrderPackageDO::getOrderPackageId, Function.identity()));
|
||||||
|
|
||||||
|
// 收集需要更新和新增的包材
|
||||||
|
List<OrderPackageDO> packagesToInsert = new ArrayList<>();
|
||||||
|
List<OrderPackageDO> packagesToUpdate = new ArrayList<>();
|
||||||
|
|
||||||
|
for (OrderPackage orderPackage : updatedSupplier.getOrderPackageList()) {
|
||||||
|
orderPackage.setOrderSupplierId(supplierDO.getOrderSupplierId());
|
||||||
|
OrderPackageDO orderPackageDO = orderPackageConvert.toOrderPackageDO(orderPackage);
|
||||||
|
|
||||||
|
if (orderPackage.getOrderPackageId() != null && existingPackageMap.containsKey(orderPackage.getOrderPackageId())) {
|
||||||
|
// 更新已存在的包材
|
||||||
|
orderPackageDO.setOrderPackageId(orderPackage.getOrderPackageId());
|
||||||
|
packagesToUpdate.add(orderPackageDO);
|
||||||
|
// 从现有映射中移除,剩下的就是需要删除的
|
||||||
|
existingPackageMap.remove(orderPackage.getOrderPackageId());
|
||||||
|
} else {
|
||||||
|
// 新增包材
|
||||||
|
packagesToInsert.add(orderPackageDO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除不再需要的包材
|
||||||
|
existingPackageMap.values().forEach(packageDO -> packageDO.deleteById());
|
||||||
|
|
||||||
|
// 执行更新操作
|
||||||
|
packagesToUpdate.forEach(orderPackageMapper::updateById);
|
||||||
|
|
||||||
|
// 执行插入操作
|
||||||
|
packagesToInsert.forEach(orderPackageMapper::insert);
|
||||||
|
} else if (updatedSupplier != null) {
|
||||||
|
// 如果更新的数据中包材列表为空,则删除所有包材信息
|
||||||
|
LambdaQueryWrapper<OrderPackageDO> packageDeleteWrapper = Wrappers.lambdaQuery(OrderPackageDO.class);
|
||||||
|
packageDeleteWrapper.eq(OrderPackageDO::getOrderSupplierId, supplierDO.getOrderSupplierId());
|
||||||
|
orderPackageMapper.delete(packageDeleteWrapper);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void saveStep3(PurchaseOrderStep3Cmd purchaseOrderStep3Cmd) {
|
||||||
|
Long orderId = purchaseOrderStep3Cmd.getOrderId();
|
||||||
|
|
||||||
|
// 否则更新现有订单
|
||||||
|
LambdaQueryWrapper<PurchaseOrderDO> queryWrapper = Wrappers.lambdaQuery(PurchaseOrderDO.class);
|
||||||
|
queryWrapper.eq(PurchaseOrderDO::getOrderId, orderId);
|
||||||
|
queryWrapper.select(PurchaseOrderDO::getOrderId, PurchaseOrderDO::getActive);
|
||||||
|
queryWrapper.last("limit 1");
|
||||||
|
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectOne(queryWrapper);
|
||||||
|
purchaseOrderDO.setActive(purchaseOrderStep3Cmd.getActive());
|
||||||
|
purchaseOrderMapper.updateById(purchaseOrderDO);
|
||||||
|
|
||||||
|
// 更新费用信息(精细化处理)
|
||||||
|
// 获取现有的费用列表
|
||||||
|
LambdaQueryWrapper<OrderCostDO> costQueryWrapper = Wrappers.lambdaQuery(OrderCostDO.class);
|
||||||
|
costQueryWrapper.eq(OrderCostDO::getOrderId, orderId);
|
||||||
|
List<OrderCostDO> existingCosts = orderCostMapper.selectList(costQueryWrapper);
|
||||||
|
|
||||||
|
// 获取更新的费用列表
|
||||||
|
List<OrderCost> updatedCosts = purchaseOrderStep3Cmd.getOrderCostList();
|
||||||
|
|
||||||
|
// 将现有费用映射到ID字典中便于查找
|
||||||
|
Map<Long, OrderCostDO> existingCostMap = existingCosts.stream()
|
||||||
|
.collect(Collectors.toMap(OrderCostDO::getOrderCostId, Function.identity()));
|
||||||
|
|
||||||
|
// 收集需要更新和新增的费用
|
||||||
|
List<OrderCostDO> costsToInsert = new ArrayList<>();
|
||||||
|
List<OrderCostDO> costsToUpdate = new ArrayList<>();
|
||||||
|
|
||||||
|
for (OrderCost updatedCost : updatedCosts) {
|
||||||
|
updatedCost.setOrderId(orderId);
|
||||||
|
OrderCostDO costDO = orderCostConvert.toOrderCostDO(updatedCost);
|
||||||
|
|
||||||
|
if (updatedCost.getOrderCostId() != null && existingCostMap.containsKey(updatedCost.getOrderCostId())) {
|
||||||
|
// 更新已存在的费用
|
||||||
|
costDO.setOrderCostId(updatedCost.getOrderCostId());
|
||||||
|
costsToUpdate.add(costDO);
|
||||||
|
// 从现有映射中移除,剩下的就是需要删除的
|
||||||
|
existingCostMap.remove(updatedCost.getOrderCostId());
|
||||||
|
} else {
|
||||||
|
// 新增费用
|
||||||
|
costsToInsert.add(costDO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除不再需要的费用
|
||||||
|
existingCostMap.values().forEach(cost -> cost.deleteById());
|
||||||
|
|
||||||
|
// 执行更新操作
|
||||||
|
costsToUpdate.forEach(orderCostMapper::updateById);
|
||||||
|
|
||||||
|
// 执行插入操作
|
||||||
|
costsToInsert.forEach(orderCostMapper::insert);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package com.xunhong.erp.turbo.biz.infrastructure.gateway;
|
package com.xunhong.erp.turbo.biz.infrastructure.gateway;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
@ -16,9 +18,7 @@ import com.xunhong.erp.turbo.api.biz.dto.qry.ShipOrderShowQry;
|
|||||||
import com.xunhong.erp.turbo.biz.domain.entity.ShipOrder;
|
import com.xunhong.erp.turbo.biz.domain.entity.ShipOrder;
|
||||||
import com.xunhong.erp.turbo.biz.domain.gateway.ShipOrderGateway;
|
import com.xunhong.erp.turbo.biz.domain.gateway.ShipOrderGateway;
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.convert.ShipOrderConvert;
|
import com.xunhong.erp.turbo.biz.infrastructure.convert.ShipOrderConvert;
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.ShipOrderDO;
|
import com.xunhong.erp.turbo.biz.infrastructure.entity.*;
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.ShipOrderItemDO;
|
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.entity.ShipOrderPackageDO;
|
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.ShipOrderItemMapper;
|
import com.xunhong.erp.turbo.biz.infrastructure.mapper.ShipOrderItemMapper;
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.ShipOrderMapper;
|
import com.xunhong.erp.turbo.biz.infrastructure.mapper.ShipOrderMapper;
|
||||||
import com.xunhong.erp.turbo.biz.infrastructure.mapper.ShipOrderPackageMapper;
|
import com.xunhong.erp.turbo.biz.infrastructure.mapper.ShipOrderPackageMapper;
|
||||||
@ -51,6 +51,12 @@ public class ShipOrderGatewayImpl implements ShipOrderGateway {
|
|||||||
@Override
|
@Override
|
||||||
public IPage<ShipOrder> page(ShipOrderPageQry shipOrderPageQry) {
|
public IPage<ShipOrder> page(ShipOrderPageQry shipOrderPageQry) {
|
||||||
LambdaQueryWrapper<ShipOrderDO> queryWrapper = Wrappers.lambdaQuery(ShipOrderDO.class);
|
LambdaQueryWrapper<ShipOrderDO> queryWrapper = Wrappers.lambdaQuery(ShipOrderDO.class);
|
||||||
|
queryWrapper.like(StrUtil.isNotBlank(shipOrderPageQry.getOrderSn()), ShipOrderDO::getOrderSn, shipOrderPageQry.getOrderSn());
|
||||||
|
queryWrapper.eq(Objects.nonNull(shipOrderPageQry.getState()), ShipOrderDO::getState, shipOrderPageQry.getState());
|
||||||
|
queryWrapper.eq(Objects.nonNull(shipOrderPageQry.getCreatedBy()), ShipOrderDO::getCreatedBy, shipOrderPageQry.getCreatedBy());
|
||||||
|
queryWrapper.like(StrUtil.isNotBlank(shipOrderPageQry.getVehicleNo()), ShipOrderDO::getVehicleNo, shipOrderPageQry.getVehicleNo());
|
||||||
|
queryWrapper.eq(Objects.nonNull(shipOrderPageQry.getDealerId()), ShipOrderDO::getDealerId, shipOrderPageQry.getDealerId());
|
||||||
|
|
||||||
queryWrapper.orderByDesc(ShipOrderDO::getCreatedAt);
|
queryWrapper.orderByDesc(ShipOrderDO::getCreatedAt);
|
||||||
|
|
||||||
IPage<ShipOrderDO> page = new Page<>(shipOrderPageQry.getPageIndex(), shipOrderPageQry.getPageSize());
|
IPage<ShipOrderDO> page = new Page<>(shipOrderPageQry.getPageIndex(), shipOrderPageQry.getPageSize());
|
||||||
|
|||||||
@ -16,25 +16,14 @@
|
|||||||
<result property="strawMatCostFlag" column="straw_mat_cost_flag"/>
|
<result property="strawMatCostFlag" column="straw_mat_cost_flag"/>
|
||||||
<result property="includePackingFlag" column="include_packing_flag"/>
|
<result property="includePackingFlag" column="include_packing_flag"/>
|
||||||
<result property="documentTypes" column="document_types"/>
|
<result property="documentTypes" column="document_types"/>
|
||||||
<result property="accountId" column="account_id"/>
|
<result property="taxSubsidy" column="tax_subsidy"/>
|
||||||
<result property="companyName" column="company_name"/>
|
<result property="taxProvision" column="tax_provision"/>
|
||||||
<result property="taxNumber" column="tax_number"/>
|
<result property="costDifference" column="cost_difference"/>
|
||||||
<result property="bankAccount" column="bank_account"/>
|
<result property="profitSharing" column="profit_sharing"/>
|
||||||
<result property="companyAddress" column="company_address"/>
|
|
||||||
<result property="phone" column="phone"/>
|
|
||||||
<result property="openingBank" column="opening_bank"/>
|
|
||||||
<result property="warehouseId" column="warehouse_id"/>
|
|
||||||
<result property="warehouseName" column="warehouse_name"/>
|
|
||||||
<result property="warehouseAddress" column="warehouse_address"/>
|
|
||||||
<result property="contactPerson" column="contact_person"/>
|
|
||||||
<result property="contactPhone" column="contact_phone"/>
|
|
||||||
<result property="receiverName" column="receiver_name"/>
|
|
||||||
<result property="receiverPhone" column="receiver_phone"/>
|
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
||||||
@ -9,6 +9,7 @@
|
|||||||
<result property="orderSupplierId" column="order_supplier_id"/>
|
<result property="orderSupplierId" column="order_supplier_id"/>
|
||||||
<result property="boxBrandId" column="box_brand_id"/>
|
<result property="boxBrandId" column="box_brand_id"/>
|
||||||
<result property="boxBrandName" column="box_brand_name"/>
|
<result property="boxBrandName" column="box_brand_name"/>
|
||||||
|
<result property="boxBrandImage" column="box_brand_image"/>
|
||||||
<result property="boxCategoryId" column="box_category_id"/>
|
<result property="boxCategoryId" column="box_category_id"/>
|
||||||
<result property="boxProductId" column="box_product_id"/>
|
<result property="boxProductId" column="box_product_id"/>
|
||||||
<result property="boxProductName" column="box_product_name"/>
|
<result property="boxProductName" column="box_product_name"/>
|
||||||
@ -23,5 +24,4 @@
|
|||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
||||||
@ -12,6 +12,8 @@
|
|||||||
<result property="dealerName" column="dealer_name"/>
|
<result property="dealerName" column="dealer_name"/>
|
||||||
<result property="warehouseId" column="warehouse_id"/>
|
<result property="warehouseId" column="warehouse_id"/>
|
||||||
<result property="warehouseName" column="warehouse_name"/>
|
<result property="warehouseName" column="warehouse_name"/>
|
||||||
|
<result property="companyId" column="company_id"/>
|
||||||
|
<result property="companyName" column="company_name"/>
|
||||||
<result property="vehicleNo" column="vehicle_no"/>
|
<result property="vehicleNo" column="vehicle_no"/>
|
||||||
<result property="shippingAddress" column="shipping_address"/>
|
<result property="shippingAddress" column="shipping_address"/>
|
||||||
<result property="receivingAddress" column="receiving_address"/>
|
<result property="receivingAddress" column="receiving_address"/>
|
||||||
@ -44,5 +46,4 @@
|
|||||||
<result property="isDelete" column="is_delete"/>
|
<result property="isDelete" column="is_delete"/>
|
||||||
<result property="version" column="version"/>
|
<result property="version" column="version"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
||||||
@ -13,6 +13,8 @@
|
|||||||
<result property="wechatQr" column="wechat_qr"/>
|
<result property="wechatQr" column="wechat_qr"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
|
<result property="createdBy" column="created_by"/>
|
||||||
|
<result property="createdByName" column="created_by_name"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="createdAt" column="created_at"/>
|
<result property="createdAt" column="created_at"/>
|
||||||
<result property="updatedAt" column="updated_at"/>
|
<result property="updatedAt" column="updated_at"/>
|
||||||
|
|||||||
@ -39,5 +39,9 @@ public interface PurchaseOrderServiceI {
|
|||||||
void rejectFinal(PurchaseOrderRejectFinalCmd purchaseOrderRejectFinalCmd);
|
void rejectFinal(PurchaseOrderRejectFinalCmd purchaseOrderRejectFinalCmd);
|
||||||
|
|
||||||
Long countPurchaseOrderByState(PurchaseOrderCountQry purchaseOrderCountQry);
|
Long countPurchaseOrderByState(PurchaseOrderCountQry purchaseOrderCountQry);
|
||||||
}
|
|
||||||
|
// 分步提交方法
|
||||||
|
PurchaseOrderVO saveStep1(PurchaseOrderStep1Cmd purchaseOrderStep1Cmd);
|
||||||
|
void saveStep2(PurchaseOrderStep2Cmd purchaseOrderStep2Cmd);
|
||||||
|
void saveStep3(PurchaseOrderStep3Cmd purchaseOrderStep3Cmd);
|
||||||
|
}
|
||||||
@ -18,6 +18,11 @@ import java.util.List;
|
|||||||
@Schema(title = "采购订单创建")
|
@Schema(title = "采购订单创建")
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class PurchaseOrderCreateCmd extends Command {
|
public class PurchaseOrderCreateCmd extends Command {
|
||||||
|
/**
|
||||||
|
* 订单ID(更新时使用)
|
||||||
|
*/
|
||||||
|
@Schema(title = "采购订单ID", type = "string")
|
||||||
|
private Long orderId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 步骤标识
|
* 步骤标识
|
||||||
|
|||||||
@ -0,0 +1,41 @@
|
|||||||
|
package com.xunhong.erp.turbo.api.biz.dto.cmd;
|
||||||
|
|
||||||
|
import com.xunhong.erp.turbo.api.biz.dto.common.OrderDealer;
|
||||||
|
import com.xunhong.erp.turbo.api.biz.dto.common.OrderVehicle;
|
||||||
|
import com.xunhong.erp.turbo.base.dto.Command;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author shenyifei
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Schema(title = "采购订单第一步:车辆信息和经销商信息保存")
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class PurchaseOrderStep1Cmd extends Command {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单ID(更新时使用)
|
||||||
|
*/
|
||||||
|
@Schema(title = "采购订单ID", type = "string")
|
||||||
|
private Long orderId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 步骤标识
|
||||||
|
*/
|
||||||
|
@Schema(title = "步骤标识")
|
||||||
|
private Integer active;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 车辆信息
|
||||||
|
*/
|
||||||
|
@Schema(title = "车辆信息", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private OrderVehicle orderVehicle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 经销商信息
|
||||||
|
*/
|
||||||
|
@Schema(title = "经销商信息", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private OrderDealer orderDealer;
|
||||||
|
}
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
package com.xunhong.erp.turbo.api.biz.dto.cmd;
|
||||||
|
|
||||||
|
import com.xunhong.erp.turbo.api.biz.dto.common.OrderSupplier;
|
||||||
|
import com.xunhong.erp.turbo.base.dto.Command;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author shenyifei
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Schema(title = "采购订单第二步:供应商信息保存")
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class PurchaseOrderStep2Cmd extends Command {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单ID
|
||||||
|
*/
|
||||||
|
@Schema(title = "采购订单ID", requiredMode = Schema.RequiredMode.REQUIRED, type = "string")
|
||||||
|
private Long orderId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 步骤标识
|
||||||
|
*/
|
||||||
|
@Schema(title = "步骤标识")
|
||||||
|
private Integer active;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商信息
|
||||||
|
*/
|
||||||
|
@Schema(title = "供应商信息", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private List<OrderSupplier> orderSupplierList;
|
||||||
|
}
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
package com.xunhong.erp.turbo.api.biz.dto.cmd;
|
||||||
|
|
||||||
|
import com.xunhong.erp.turbo.api.biz.dto.common.OrderCost;
|
||||||
|
import com.xunhong.erp.turbo.base.dto.Command;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author shenyifei
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Schema(title = "采购订单第三步:人工和辅料等费用信息保存")
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class PurchaseOrderStep3Cmd extends Command {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单ID
|
||||||
|
*/
|
||||||
|
@Schema(title = "采购订单ID", requiredMode = Schema.RequiredMode.REQUIRED, type = "string")
|
||||||
|
private Long orderId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 步骤标识
|
||||||
|
*/
|
||||||
|
@Schema(title = "步骤标识")
|
||||||
|
private Integer active;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 费用信息
|
||||||
|
*/
|
||||||
|
@Schema(title = "采购订单费用信息", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private List<OrderCost> orderCostList;
|
||||||
|
}
|
||||||
@ -136,6 +136,18 @@ public class ShipOrderCreateCmd extends Command {
|
|||||||
@Schema(title = "瓜农姓名逗号隔开")
|
@Schema(title = "瓜农姓名逗号隔开")
|
||||||
private String farmerInfo;
|
private String farmerInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司ID
|
||||||
|
*/
|
||||||
|
@Schema(title = "公司ID", type = "string")
|
||||||
|
private Long companyId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司名称
|
||||||
|
*/
|
||||||
|
@Schema(title = "公司名称")
|
||||||
|
private String companyName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
@ -154,5 +166,4 @@ public class ShipOrderCreateCmd extends Command {
|
|||||||
@Schema(title = "创建人姓名")
|
@Schema(title = "创建人姓名")
|
||||||
private String createdByName;
|
private String createdByName;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,6 +38,18 @@ public class ShipOrderUpdateCmd extends Command {
|
|||||||
@Schema(title = "发货地址")
|
@Schema(title = "发货地址")
|
||||||
private String shippingAddress;
|
private String shippingAddress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司ID
|
||||||
|
*/
|
||||||
|
@Schema(title = "公司ID", type = "string")
|
||||||
|
private Long companyId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司名称
|
||||||
|
*/
|
||||||
|
@Schema(title = "公司名称")
|
||||||
|
private String companyName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
@ -67,5 +79,4 @@ public class ShipOrderUpdateCmd extends Command {
|
|||||||
*/
|
*/
|
||||||
@Schema(title = "成本单据")
|
@Schema(title = "成本单据")
|
||||||
private String costDocument;
|
private String costDocument;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,91 +81,28 @@ public class OrderDealer extends Command {
|
|||||||
*/
|
*/
|
||||||
@Schema(title = "单据类型:delivery-发货单, purchase-采购底单, cost-成本单")
|
@Schema(title = "单据类型:delivery-发货单, purchase-采购底单, cost-成本单")
|
||||||
private String documentTypes;
|
private String documentTypes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 账户ID
|
* 税费补贴
|
||||||
*/
|
*/
|
||||||
@Schema(title = "账户ID", type = "string")
|
@Schema(title = "税费补贴")
|
||||||
private Long accountId;
|
private BigDecimal taxSubsidy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公司名称
|
* 计提税金
|
||||||
*/
|
*/
|
||||||
@Schema(title = "公司名称")
|
@Schema(title = "计提税金")
|
||||||
private String companyName;
|
private BigDecimal taxProvision;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 税号
|
* 成本差异
|
||||||
*/
|
*/
|
||||||
@Schema(title = "税号")
|
@Schema(title = "成本差异")
|
||||||
private String taxNumber;
|
private BigDecimal costDifference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 银行账号
|
* 利润分成
|
||||||
*/
|
*/
|
||||||
@Schema(title = "银行账号")
|
@Schema(title = "利润分成")
|
||||||
private String bankAccount;
|
private BigDecimal profitSharing;
|
||||||
|
}
|
||||||
/**
|
|
||||||
* 单位地址
|
|
||||||
*/
|
|
||||||
@Schema(title = "单位地址")
|
|
||||||
private String companyAddress;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 电话
|
|
||||||
*/
|
|
||||||
@Schema(title = "电话")
|
|
||||||
private String phone;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 开户行
|
|
||||||
*/
|
|
||||||
@Schema(title = "开户行")
|
|
||||||
private String openingBank;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 仓库ID
|
|
||||||
*/
|
|
||||||
@Schema(title = "仓库ID", type = "string")
|
|
||||||
private Long warehouseId;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 仓库名称
|
|
||||||
*/
|
|
||||||
@Schema(title = "仓库名称")
|
|
||||||
private String warehouseName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 仓库地址
|
|
||||||
*/
|
|
||||||
@Schema(title = "仓库地址")
|
|
||||||
private String warehouseAddress;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 联系人
|
|
||||||
*/
|
|
||||||
@Schema(title = "联系人")
|
|
||||||
private String contactPerson;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 联系电话
|
|
||||||
*/
|
|
||||||
@Schema(title = "联系电话")
|
|
||||||
private String contactPhone;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 收货人姓名
|
|
||||||
*/
|
|
||||||
@Schema(title = "收货人姓名")
|
|
||||||
private String receiverName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 收货人电话
|
|
||||||
*/
|
|
||||||
@Schema(title = "收货人电话")
|
|
||||||
private String receiverPhone;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -40,6 +40,12 @@ public class OrderPackage extends Command {
|
|||||||
@Schema(title = "箱子品牌名称", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(title = "箱子品牌名称", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
private String boxBrandName;
|
private String boxBrandName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 箱子品牌图片
|
||||||
|
*/
|
||||||
|
@Schema(title = "箱子品牌图片")
|
||||||
|
private String boxBrandImage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 箱子分类ID
|
* 箱子分类ID
|
||||||
*/
|
*/
|
||||||
@ -88,5 +94,4 @@ public class OrderPackage extends Command {
|
|||||||
@Schema(title = "箱子类型:1_本次使用;2_额外运输;3_已使用额外运输;4_车上剩余;", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(title = "箱子类型:1_本次使用;2_额外运输;3_已使用额外运输;4_车上剩余;", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
private OrderPackageBoxTypeEnum boxType;
|
private OrderPackageBoxTypeEnum boxType;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15,25 +15,25 @@ public class OrderRebate extends DTO {
|
|||||||
/**
|
/**
|
||||||
* 记录ID
|
* 记录ID
|
||||||
*/
|
*/
|
||||||
@Schema(title = "记录ID")
|
@Schema(title = "记录ID", type = "string")
|
||||||
private Long orderRebateId;
|
private Long orderRebateId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单ID
|
* 订单ID
|
||||||
*/
|
*/
|
||||||
@Schema(title = "订单ID")
|
@Schema(title = "订单ID", type = "string")
|
||||||
private Long orderId;
|
private Long orderId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户ID
|
* 客户ID
|
||||||
*/
|
*/
|
||||||
@Schema(title = "客户ID")
|
@Schema(title = "客户ID", type = "string")
|
||||||
private Long customerId;
|
private Long customerId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 经销商ID
|
* 经销商ID
|
||||||
*/
|
*/
|
||||||
@Schema(title = "经销商ID")
|
@Schema(title = "经销商ID", type = "string")
|
||||||
private Long dealerId;
|
private Long dealerId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -70,11 +70,16 @@ public class ShipOrderPackage extends DTO {
|
|||||||
@Schema(title = "总重(斤)")
|
@Schema(title = "总重(斤)")
|
||||||
private BigDecimal totalWeight;
|
private BigDecimal totalWeight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 箱子品牌图片
|
||||||
|
*/
|
||||||
|
@Schema(title = "箱子品牌图片")
|
||||||
|
private String boxBrandImage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
@Schema(title = "创建时间")
|
@Schema(title = "创建时间")
|
||||||
private LocalDateTime createdAt;
|
private LocalDateTime createdAt;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8,12 +8,13 @@ import lombok.RequiredArgsConstructor;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public enum OrderPackageBoxTypeEnum {
|
public enum OrderPackageBoxTypeEnum {
|
||||||
/**
|
/**
|
||||||
* 箱子类型:1_本次使用;2_额外运输;3_已使用额外运输;4_车上剩余;
|
* 箱子类型:1_本次使用;2_额外运输;3_已使用额外运输;4_车上剩余;5_瓜农纸箱;
|
||||||
*/
|
*/
|
||||||
USED(1, "本次使用"),
|
USED(1, "本次使用"),
|
||||||
EXTRA(2, "额外运输"),
|
EXTRA(2, "额外运输"),
|
||||||
EXTRA_USED(3, "已使用额外运输"),
|
EXTRA_USED(3, "已使用额外运输"),
|
||||||
REMAIN(4, "车上剩余");
|
REMAIN(4, "车上剩余"),
|
||||||
|
OWN(5, "瓜农纸箱");
|
||||||
|
|
||||||
@EnumValue
|
@EnumValue
|
||||||
private final int type;
|
private final int type;
|
||||||
|
|||||||
@ -10,7 +10,7 @@ public enum OrderRebateCalcMethodEnum {
|
|||||||
/**
|
/**
|
||||||
* 返点计算方式:1_按净重计算;2_固定金额;
|
* 返点计算方式:1_按净重计算;2_固定金额;
|
||||||
*/
|
*/
|
||||||
BY_WEIGHT(1, "按净重计算"),
|
NET_WEIGHT(1, "按净重计算"),
|
||||||
FIXED_AMOUNT(2, "固定金额");
|
FIXED_AMOUNT(2, "固定金额");
|
||||||
|
|
||||||
@EnumValue
|
@EnumValue
|
||||||
|
|||||||
@ -32,16 +32,7 @@ public class PurchaseOrderPageQry extends PageQuery {
|
|||||||
@Schema(title = "供应商名称", type = "string")
|
@Schema(title = "供应商名称", type = "string")
|
||||||
private String supplierName;
|
private String supplierName;
|
||||||
|
|
||||||
@Schema(title = "经销商付款账户ID", type = "string")
|
|
||||||
private Long dealerPaymentAccountId;
|
|
||||||
|
|
||||||
@Schema(title = "经销商ID", type = "string")
|
@Schema(title = "经销商ID", type = "string")
|
||||||
private Long dealerId;
|
private Long dealerId;
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建人ID
|
|
||||||
*/
|
|
||||||
@Schema(title = "创建人ID", type = "string")
|
|
||||||
private Long createdBy;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
package com.xunhong.erp.turbo.api.biz.dto.qry;
|
package com.xunhong.erp.turbo.api.biz.dto.qry;
|
||||||
|
|
||||||
|
import com.xunhong.erp.turbo.api.biz.dto.enums.ShipOrderStateEnum;
|
||||||
import com.xunhong.erp.turbo.base.dto.PageQuery;
|
import com.xunhong.erp.turbo.base.dto.PageQuery;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -15,5 +16,22 @@ public class ShipOrderPageQry extends PageQuery {
|
|||||||
|
|
||||||
@Schema(title = "发货单ID", type = "string")
|
@Schema(title = "发货单ID", type = "string")
|
||||||
private Long shipOrderId;
|
private Long shipOrderId;
|
||||||
|
|
||||||
|
@Schema(title = "车辆编号", type = "string")
|
||||||
|
private String vehicleNo;
|
||||||
|
|
||||||
|
@Schema(title = "采购订单编号", type = "string")
|
||||||
|
private String orderSn;
|
||||||
|
/**
|
||||||
|
* 发货单状态:1_待回款;2_部分回款;3_已回款;4_拒收完结;5_已完结;
|
||||||
|
*/
|
||||||
|
@Schema(title = "发货单状态:1_待回款;2_部分回款;3_已回款;4_拒收完结;5_已完结;")
|
||||||
|
private ShipOrderStateEnum state;
|
||||||
|
|
||||||
|
@Schema(title = "供应商名称", type = "string")
|
||||||
|
private String supplierName;
|
||||||
|
|
||||||
|
@Schema(title = "经销商ID", type = "string")
|
||||||
|
private Long dealerId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -65,6 +65,18 @@ public class ShipOrderVO extends DTO {
|
|||||||
@Schema(title = "仓库名称")
|
@Schema(title = "仓库名称")
|
||||||
private String warehouseName;
|
private String warehouseName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司ID
|
||||||
|
*/
|
||||||
|
@Schema(title = "公司ID", type = "string")
|
||||||
|
private Long companyId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公司名称
|
||||||
|
*/
|
||||||
|
@Schema(title = "公司名称")
|
||||||
|
private String companyName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车次号
|
* 车次号
|
||||||
*/
|
*/
|
||||||
@ -239,5 +251,4 @@ public class ShipOrderVO extends DTO {
|
|||||||
private List<ShipOrderPackage> shipOrderPackageList;
|
private List<ShipOrderPackage> shipOrderPackageList;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,6 +63,18 @@ public class SupplierVO extends DTO {
|
|||||||
@Schema(title = "状态:1_启用;0_禁用;", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(title = "状态:1_启用;0_禁用;", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
private Boolean status;
|
private Boolean status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人ID
|
||||||
|
*/
|
||||||
|
@Schema(title = "创建人ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
private Long createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人姓名
|
||||||
|
*/
|
||||||
|
@Schema(title = "创建人姓名")
|
||||||
|
private String createdByName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -25,4 +25,16 @@ public class PageQuery extends com.alibaba.cola.dto.PageQuery {
|
|||||||
*/
|
*/
|
||||||
@Schema(title = "状态:1_启用;0_禁用;")
|
@Schema(title = "状态:1_启用;0_禁用;")
|
||||||
private Boolean status;
|
private Boolean status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人ID
|
||||||
|
*/
|
||||||
|
@Schema(title = "创建人ID", type = "string", hidden = true)
|
||||||
|
private Long createdBy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人名称
|
||||||
|
*/
|
||||||
|
@Schema(title = "创建人名称", type = "string", hidden = true)
|
||||||
|
private String createdByName;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user