feat(purchase): 添加获取上一车车次号接口

- 新增 getLastVehicleNo 接口用于查询最新车次号
- 在 PurchaseOrderController 中添加对应 GET 接口
- 实现 LastVehicleNoQry 查询执行器及查询逻辑
- 扩展相关 DTO 和 Gateway 接口定义
- 更新 OrderDealer 实体类及其映射配置
- 添加新的查询参数类 LastVehicleNoQry
- 在 CostItem 中增加 requireQuantityAndPrice 字段
- 扩展 CostItemCostTypeEnum 枚举值
This commit is contained in:
shenyifei 2025-11-13 23:08:20 +08:00
parent 9401bb7483
commit ab0151e84d
18 changed files with 335 additions and 22 deletions

View File

@ -0,0 +1,156 @@
---
trigger: manual
---
# 新增接口需要添加的组件清单
注意:
不用管 erp-turbo-svc 这个目录的代码
本文档描述了在本项目中添加一个新的API接口时需要修改或创建的组件。
## 1. API层 (接口定义层)
注意这个 biz 可以是其他的名user、goods、order等
### 1.1 DTO定义
- **查询参数类(Query)**
- 路径: `erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/`
- 命名规范: `功能名+CountQry``功能名+ListQry``功能名+PageQry`
- 继承: `Query` 基类
- 注解: `@Data`, `@Schema`, `@EqualsAndHashCode(callSuper = true)`
- **命令类(Command)**
- 路径: `erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/`
- 命名规范: `功能名+CreateCmd``功能名+UpdateCmd``功能名+DestroyCmd`
- 继承: `Command` 基类
- 注解: `@Data`, `@Schema`, `@EqualsAndHashCode(callSuper = true)`
- **返回值类(Value Object)**
- 路径: `erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/`
- 命名规范: `功能名+VO`
- 注解: `@Data`, `@Schema`
### 1.2 服务接口定义
- **接口文件**
- 路径: `erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/`
- 文件命名: `功能名+ServiceI`
- 方法签名: 定义业务方法
## 2. 业务实现层 (Biz层)
### 2.1 服务实现
- **服务实现类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/`
- 文件命名: `功能名+ServiceImpl`
- 实现接口: 实现对应的ServiceI接口
- 注解: `@Service`, `@DubboService`, `@RequiredArgsConstructor`
- 依赖注入: 通过构造函数注入执行器
### 2.2 查询执行器
- **查询执行器类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/`
- 文件命名: `功能名+QryExe`
- 注解: `@Component`, `@RequiredArgsConstructor`
- 方法: `execute()`方法处理具体查询逻辑
### 2.3 命令执行器
- **命令执行器类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/cmd/`
- 文件命名: `功能名+CmdExe`
- 注解: `@Component`, `@RequiredArgsConstructor`
- 方法: `execute()`方法处理具体命令逻辑
### 2.4 网关接口
- **网关接口**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/`
- 文件命名: `功能名+Gateway`
- 定义数据访问方法
### 2.5 领域实体
- **领域实体类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/`
- 文件命名: `功能名`
- 注解: `@Data`, `@ToString`, `@Builder`, `@NoArgsConstructor`, `@AllArgsConstructor`
### 2.6 数据实体
- **数据实体类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/`
- 文件命名: `功能名+DO`
- 继承: `BaseDO`
- 注解: `@Data`, `@TableName`, `@EqualsAndHashCode(callSuper = true)`
### 2.7 数据转换器
- **转换器类**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/`
- 文件命名: `功能名+Convert`
- 注解: `@Mapper`
- 方法: 定义DO与领域实体、DO与VO之间的转换方法
### 2.8 数据访问层
- **Mapper接口**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/mapper/`
- 文件命名: `功能名+Mapper`
- 继承: `BaseMapper<实体类>`
- 注解: `@Mapper`
- **Mapper XML文件**
- 路径: `erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/`
- 文件命名: `功能名+Mapper.xml`
## 3. 控制层 (Controller层)
### 3.1 控制器
- **控制器类**
- 路径: `erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/`
- 文件命名: `功能名+Controller`
- 注解: `@RestController`, `@RequestMapping`, `@RequiredArgsConstructor`
- 方法注解: `@SaCheckLogin`, `@GetMapping`/`@PostMapping`, `@Operation`
- Dubbo引用: `@DubboReference` 注解引入服务接口
## 4. 枚举类 (如有需要)
### 4.1 枚举定义
- **枚举类**
- 路径: `erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/`
- 文件命名: `功能名+Enum`
- 实现接口: `DictEnum`
- 注解: `@Getter`, `@AllArgsConstructor`
## 5. 数据库变更 (如有需要)
### 5.1 数据库迁移脚本
- **SQL脚本**
- 路径: `db/migration/`
- 文件命名: `V版本号__变更描述.sql`
## 6. 测试用例 (建议)
### 6.1 单元测试
- **测试类**
- 路径: 对应模块的test目录下
- 文件命名: 被测试类+Test
## 7. 接口文档
### 7.1 Swagger注解
- 所有Controller方法都应添加Swagger注解包括:
- `@Tag` - 类级别,描述接口分类
- `@Operation` - 方法级别,描述接口功能
- `@Schema` - 类属性级别,描述字段含义
## 8. 权限控制
### 8.1 权限注解
- 使用`@SaCheckLogin`进行登录检查
- 使用`@SaCheckRole`进行角色检查
- 使用`@SaCheckPermission`进行权限检查(如需要)
## 9. 校验注解
### 9.1 参数校验
- 在Query和Command类的字段上使用校验注解如:
- `@NotNull` - 非空校验
- `@NotBlank` - 非空字符串校验
- `@Min`/`@Max` - 数值范围校验
- 在Controller方法参数中使用`@Validated`注解

View File

@ -9,6 +9,7 @@ import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse; import com.alibaba.cola.dto.SingleResponse;
import com.xunhong.erp.turbo.api.biz.api.PurchaseOrderServiceI; import com.xunhong.erp.turbo.api.biz.api.PurchaseOrderServiceI;
import com.xunhong.erp.turbo.api.biz.dto.cmd.*; import com.xunhong.erp.turbo.api.biz.dto.cmd.*;
import com.xunhong.erp.turbo.api.biz.dto.qry.LastVehicleNoQry;
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderCountQry; import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderCountQry;
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderListQry; 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;
@ -190,4 +191,11 @@ public class PurchaseOrderController {
return Response.buildSuccess(); return Response.buildSuccess();
} }
@SaCheckLogin
@GetMapping("getLastVehicleNo")
@Operation(summary = "获取上一车车次号", method = "GET")
public SingleResponse<String> getLastVehicleNo(@ModelAttribute @Validated LastVehicleNoQry lastVehicleNoQry) {
return SingleResponse.of(purchaseOrderService.getLastVehicleNo(lastVehicleNoQry));
}
} }

View File

@ -0,0 +1,22 @@
package com.xunhong.erp.turbo.biz.app.executor.query;
import com.xunhong.erp.turbo.api.biz.dto.qry.LastVehicleNoQry;
import com.xunhong.erp.turbo.biz.domain.gateway.PurchaseOrderGateway;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author lingma
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class LastVehicleNoQryExe {
private final PurchaseOrderGateway purchaseOrderGateway;
public String execute(LastVehicleNoQry lastVehicleNoQry) {
return purchaseOrderGateway.getLastVehicleNo(lastVehicleNoQry);
}
}

View File

@ -2,6 +2,7 @@ package com.xunhong.erp.turbo.biz.app.service;
import com.xunhong.erp.turbo.api.biz.api.PurchaseOrderServiceI; import com.xunhong.erp.turbo.api.biz.api.PurchaseOrderServiceI;
import com.xunhong.erp.turbo.api.biz.dto.cmd.*; import com.xunhong.erp.turbo.api.biz.dto.cmd.*;
import com.xunhong.erp.turbo.api.biz.dto.qry.LastVehicleNoQry;
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderCountQry; import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderCountQry;
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderListQry; 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;
@ -9,10 +10,7 @@ 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.base.dto.PageDTO; import com.xunhong.erp.turbo.base.dto.PageDTO;
import com.xunhong.erp.turbo.biz.app.executor.cmd.*; import com.xunhong.erp.turbo.biz.app.executor.cmd.*;
import com.xunhong.erp.turbo.biz.app.executor.query.PurchaseOrderCountQryExe; import com.xunhong.erp.turbo.biz.app.executor.query.*;
import com.xunhong.erp.turbo.biz.app.executor.query.PurchaseOrderListQryExe;
import com.xunhong.erp.turbo.biz.app.executor.query.PurchaseOrderPageQryExe;
import com.xunhong.erp.turbo.biz.app.executor.query.PurchaseOrderShowQryExe;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
@ -48,6 +46,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderServiceI {
private final PurchaseOrderStep2CmdExe purchaseOrderStep2CmdExe; private final PurchaseOrderStep2CmdExe purchaseOrderStep2CmdExe;
private final PurchaseOrderStep3CmdExe purchaseOrderStep3CmdExe; private final PurchaseOrderStep3CmdExe purchaseOrderStep3CmdExe;
private final LastVehicleNoQryExe lastVehicleNoQryExe;
@Override @Override
public PurchaseOrderVO create(PurchaseOrderCreateCmd purchaseOrderCreateCmd) { public PurchaseOrderVO create(PurchaseOrderCreateCmd purchaseOrderCreateCmd) {
return purchaseOrderCreateCmdExe.execute(purchaseOrderCreateCmd); return purchaseOrderCreateCmdExe.execute(purchaseOrderCreateCmd);
@ -128,4 +128,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderServiceI {
public void saveStep3(PurchaseOrderStep3Cmd purchaseOrderStep3Cmd) { public void saveStep3(PurchaseOrderStep3Cmd purchaseOrderStep3Cmd) {
purchaseOrderStep3CmdExe.execute(purchaseOrderStep3Cmd); purchaseOrderStep3CmdExe.execute(purchaseOrderStep3Cmd);
} }
@Override
public String getLastVehicleNo(LastVehicleNoQry lastVehicleNoQry) {
return lastVehicleNoQryExe.execute(lastVehicleNoQry);
}
} }

View File

@ -47,6 +47,11 @@ public class CostItem extends DTO {
*/ */
private Boolean showInEntry; private Boolean showInEntry;
/**
* 是否需要填写数量和单价
*/
private Boolean requireQuantityAndPrice;
/** /**
* 备注 * 备注
*/ */

View File

@ -2,6 +2,7 @@ package com.xunhong.erp.turbo.biz.domain.gateway;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xunhong.erp.turbo.api.biz.dto.cmd.*; import com.xunhong.erp.turbo.api.biz.dto.cmd.*;
import com.xunhong.erp.turbo.api.biz.dto.qry.LastVehicleNoQry;
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderCountQry; import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderCountQry;
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderListQry; 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;
@ -44,4 +45,12 @@ public interface PurchaseOrderGateway {
void rejectFinal(PurchaseOrderRejectFinalCmd purchaseOrderRejectFinalCmd); void rejectFinal(PurchaseOrderRejectFinalCmd purchaseOrderRejectFinalCmd);
Long countBy(PurchaseOrderCountQry purchaseOrderCountQry); Long countBy(PurchaseOrderCountQry purchaseOrderCountQry);
/**
* 获取上一车的车次号
*
* @param lastVehicleNoQry 查询参数
* @return 车次号
*/
String getLastVehicleNo(LastVehicleNoQry lastVehicleNoQry);
} }

View File

@ -17,12 +17,14 @@ public interface CostItemConvert {
CostItem toCostItem(CostItemDO costItemDO); CostItem toCostItem(CostItemDO costItemDO);
@Mapping(target = "sort", ignore = true)
@Mapping(target = "version", ignore = true) @Mapping(target = "version", ignore = true)
@Mapping(target = "updatedAt", ignore = true) @Mapping(target = "updatedAt", ignore = true)
@Mapping(target = "isDelete", ignore = true) @Mapping(target = "isDelete", ignore = true)
@Mapping(target = "createdAt", ignore = true) @Mapping(target = "createdAt", ignore = true)
CostItemDO toCostItemDO(CostItemCreateCmd costItemCreateCmd); CostItemDO toCostItemDO(CostItemCreateCmd costItemCreateCmd);
@Mapping(target = "sort", ignore = true)
@Mapping(target = "version", ignore = true) @Mapping(target = "version", ignore = true)
@Mapping(target = "updatedAt", ignore = true) @Mapping(target = "updatedAt", ignore = true)
@Mapping(target = "isDelete", ignore = true) @Mapping(target = "isDelete", ignore = true)

View File

@ -55,6 +55,12 @@ public class CostItemDO extends BaseDO<CostItemDO> {
@TableField(value = "show_in_entry") @TableField(value = "show_in_entry")
private Boolean showInEntry; private Boolean showInEntry;
/**
* 是否需要填写数量和单价
*/
@TableField(value = "require_quantity_and_price")
private Boolean requireQuantityAndPrice;
/** /**
* 备注 * 备注
*/ */

View File

@ -80,34 +80,58 @@ public class OrderDealerDO extends BaseDO<OrderDealerDO> {
@TableField(value = "include_packing_flag") @TableField(value = "include_packing_flag")
private Boolean includePackingFlag; private Boolean includePackingFlag;
/**
* 是否开启计提税金
*/
@TableField(value = "enable_accrual_tax")
private Boolean enableAccrualTax;
/**
* 计提税金比例
*/
@TableField(value = "accrual_tax_ratio")
private BigDecimal accrualTaxRatio;
/**
* 是否开启公司返点
*/
@TableField(value = "enable_company_rebate")
private Boolean enableCompanyRebate;
/**
* 公司返点比例
*/
@TableField(value = "company_rebate_ratio")
private BigDecimal companyRebateRatio;
/** /**
* 单据类型delivery-发货单, purchase-采购底单, cost-成本单 * 单据类型delivery-发货单, purchase-采购底单, cost-成本单
*/ */
@TableField(value = "document_types") @TableField(value = "document_types")
private String documentTypes; private String documentTypes;
/** /**
* 税费补贴 * 税费补贴
*/ */
@TableField(value = "tax_subsidy") @TableField(value = "tax_subsidy")
private BigDecimal taxSubsidy; private BigDecimal taxSubsidy;
/** /**
* 计提税金 * 计提税金
*/ */
@TableField(value = "tax_provision") @TableField(value = "tax_provision")
private BigDecimal taxProvision; private BigDecimal taxProvision;
/** /**
* 成本差异 * 成本差异
*/ */
@TableField(value = "cost_difference") @TableField(value = "cost_difference")
private BigDecimal costDifference; private BigDecimal costDifference;
/** /**
* 利润分成 * 利润分成
*/ */
@TableField(value = "profit_sharing") @TableField(value = "profit_sharing")
private BigDecimal profitSharing; private BigDecimal profitSharing;
} }

View File

@ -11,6 +11,7 @@ import com.xunhong.erp.turbo.api.biz.dto.common.*;
import com.xunhong.erp.turbo.api.biz.dto.enums.CostItemCostTypeEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.CostItemCostTypeEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum; import com.xunhong.erp.turbo.api.biz.dto.enums.PurchaseOrderStateEnum;
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderCountQry; import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderCountQry;
import com.xunhong.erp.turbo.api.biz.dto.qry.LastVehicleNoQry;
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderListQry; 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;
@ -921,5 +922,16 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway {
// 执行插入操作 // 执行插入操作
costsToInsert.forEach(orderCostMapper::insert); costsToInsert.forEach(orderCostMapper::insert);
} }
@Override
public String getLastVehicleNo(LastVehicleNoQry lastVehicleNoQry) {
LambdaQueryWrapper<OrderVehicleDO> queryWrapper = Wrappers.lambdaQuery(OrderVehicleDO.class);
queryWrapper.isNotNull(OrderVehicleDO::getVehicleNo);
queryWrapper.orderByDesc(OrderVehicleDO::getCreatedAt);
queryWrapper.last("limit 1");
OrderVehicleDO orderVehicleDO = orderVehicleMapper.selectOne(queryWrapper);
return orderVehicleDO != null ? orderVehicleDO.getVehicleNo() : null;
}
} }

View File

@ -11,6 +11,7 @@
<result property="unit" column="unit"/> <result property="unit" column="unit"/>
<result property="price" column="price"/> <result property="price" column="price"/>
<result property="showInEntry" column="show_in_entry"/> <result property="showInEntry" column="show_in_entry"/>
<result property="requireQuantityAndPrice" column="require_quantity_and_price"/>
<result property="remark" column="remark"/> <result property="remark" column="remark"/>
<result property="status" column="status"/> <result property="status" column="status"/>
<result property="createdAt" column="created_at"/> <result property="createdAt" column="created_at"/>
@ -19,5 +20,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>

View File

@ -15,6 +15,10 @@
<result property="freightCostFlag" column="freight_cost_flag"/> <result property="freightCostFlag" column="freight_cost_flag"/>
<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="enableAccrualTax" column="enable_accrual_tax"/>
<result property="accrualTaxRatio" column="accrual_tax_ratio"/>
<result property="enableCompanyRebate" column="enable_company_rebate"/>
<result property="companyRebateRatio" column="company_rebate_ratio"/>
<result property="documentTypes" column="document_types"/> <result property="documentTypes" column="document_types"/>
<result property="taxSubsidy" column="tax_subsidy"/> <result property="taxSubsidy" column="tax_subsidy"/>
<result property="taxProvision" column="tax_provision"/> <result property="taxProvision" column="tax_provision"/>
@ -26,4 +30,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>

View File

@ -1,6 +1,7 @@
package com.xunhong.erp.turbo.api.biz.api; package com.xunhong.erp.turbo.api.biz.api;
import com.xunhong.erp.turbo.api.biz.dto.cmd.*; import com.xunhong.erp.turbo.api.biz.dto.cmd.*;
import com.xunhong.erp.turbo.api.biz.dto.qry.LastVehicleNoQry;
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderCountQry; import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderCountQry;
import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderListQry; 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;
@ -44,4 +45,12 @@ public interface PurchaseOrderServiceI {
PurchaseOrderVO saveStep1(PurchaseOrderStep1Cmd purchaseOrderStep1Cmd); PurchaseOrderVO saveStep1(PurchaseOrderStep1Cmd purchaseOrderStep1Cmd);
void saveStep2(PurchaseOrderStep2Cmd purchaseOrderStep2Cmd); void saveStep2(PurchaseOrderStep2Cmd purchaseOrderStep2Cmd);
void saveStep3(PurchaseOrderStep3Cmd purchaseOrderStep3Cmd); void saveStep3(PurchaseOrderStep3Cmd purchaseOrderStep3Cmd);
/**
* 获取上一车的车次号
*
* @param lastVehicleNoQry 查询参数
* @return 车次号
*/
String getLastVehicleNo(LastVehicleNoQry lastVehicleNoQry);
} }

View File

@ -52,6 +52,12 @@ public class CostItemCreateCmd extends Command {
@Schema(title = "是否在录入时显示", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "是否在录入时显示", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean showInEntry; private Boolean showInEntry;
/**
* 是否需要填写数量和单价
*/
@Schema(title = "是否需要填写数量和单价", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean requireQuantityAndPrice;
/** /**
* 备注 * 备注
*/ */
@ -64,5 +70,4 @@ public class CostItemCreateCmd extends Command {
@Schema(title = "状态1_启用0_禁用", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "状态1_启用0_禁用", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean status; private Boolean status;
} }

View File

@ -76,33 +76,57 @@ public class OrderDealer extends Command {
@Schema(title = "发货单合计金额是否含包装费") @Schema(title = "发货单合计金额是否含包装费")
private Boolean includePackingFlag; private Boolean includePackingFlag;
/**
* 是否开启计提税金
*/
@Schema(title = "是否开启计提税金")
private Boolean enableAccrualTax;
/**
* 计提税金比例
*/
@Schema(title = "计提税金比例")
private BigDecimal accrualTaxRatio;
/**
* 是否开启公司返点
*/
@Schema(title = "是否开启公司返点")
private Boolean enableCompanyRebate;
/**
* 公司返点比例
*/
@Schema(title = "公司返点比例")
private BigDecimal companyRebateRatio;
/** /**
* 单据类型delivery-发货单, purchase-采购底单, cost-成本单 * 单据类型delivery-发货单, purchase-采购底单, cost-成本单
*/ */
@Schema(title = "单据类型delivery-发货单, purchase-采购底单, cost-成本单") @Schema(title = "单据类型delivery-发货单, purchase-采购底单, cost-成本单")
private String documentTypes; private String documentTypes;
/** /**
* 税费补贴 * 税费补贴
*/ */
@Schema(title = "税费补贴") @Schema(title = "税费补贴")
private BigDecimal taxSubsidy; private BigDecimal taxSubsidy;
/** /**
* 计提税金 * 计提税金
*/ */
@Schema(title = "计提税金") @Schema(title = "计提税金")
private BigDecimal taxProvision; private BigDecimal taxProvision;
/** /**
* 成本差异 * 成本差异
*/ */
@Schema(title = "成本差异") @Schema(title = "成本差异")
private BigDecimal costDifference; private BigDecimal costDifference;
/** /**
* 利润分成 * 利润分成
*/ */
@Schema(title = "利润分成") @Schema(title = "利润分成")
private BigDecimal profitSharing; private BigDecimal profitSharing;
} }

View File

@ -8,12 +8,14 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor @RequiredArgsConstructor
public enum CostItemCostTypeEnum { public enum CostItemCostTypeEnum {
/** /**
* 费用类型1_包装材料2_人工费用3_其他费用4_固定费用4_固定费用 * 费用类型1_包装材料2_人工费用3_其他费用4_固定费用5_工头垫付6_产地垫付
*/ */
PACKAGING_MATERIALS(1, "包装材料"), PACKAGING_MATERIALS(1, "包装材料"),
HUMAN_COST(2, "人工费用"), HUMAN_COST(2, "人工费用"),
OTHER_COST(3, "其他费用"), OTHER_COST(3, "其他费用"),
FIXED_COST(4, "固定费用"), FIXED_COST(4, "固定费用"),
WORKER_ADVANCE(5, "工头垫付"),
PRODUCTION_ADVANCE(6, "产地垫付"),
; ;
@EnumValue @EnumValue

View File

@ -0,0 +1,15 @@
package com.xunhong.erp.turbo.api.biz.dto.qry;
import com.xunhong.erp.turbo.base.dto.Query;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author lingma
*/
@Data
@Schema(title = "上一车车次号查询参数")
@EqualsAndHashCode(callSuper = true)
public class LastVehicleNoQry extends Query {
}

View File

@ -53,6 +53,12 @@ public class CostItemVO extends DTO {
@Schema(title = "是否在录入时显示", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(title = "是否在录入时显示", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean showInEntry; private Boolean showInEntry;
/**
* 是否需要填写数量和单价
*/
@Schema(title = "是否需要填写数量和单价", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean requireQuantityAndPrice;
/** /**
* 备注 * 备注
*/ */
@ -71,5 +77,4 @@ public class CostItemVO extends DTO {
@Schema(title = "创建时间") @Schema(title = "创建时间")
private LocalDateTime createdAt; private LocalDateTime createdAt;
} }