diff --git a/.lingma/rules/api_addition_guide.md b/.lingma/rules/api_addition_guide.md new file mode 100644 index 0000000..960b2e4 --- /dev/null +++ b/.lingma/rules/api_addition_guide.md @@ -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`注解 diff --git a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/PurchaseOrderController.java b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/PurchaseOrderController.java index a0f72f9..9e4d082 100644 --- a/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/PurchaseOrderController.java +++ b/erp-turbo-admin/src/main/java/com/xunhong/erp/turbo/admin/controller/PurchaseOrderController.java @@ -9,6 +9,7 @@ import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.SingleResponse; 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.qry.LastVehicleNoQry; 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.PurchaseOrderPageQry; @@ -190,4 +191,11 @@ public class PurchaseOrderController { return Response.buildSuccess(); } + @SaCheckLogin + @GetMapping("getLastVehicleNo") + @Operation(summary = "获取上一车车次号", method = "GET") + public SingleResponse getLastVehicleNo(@ModelAttribute @Validated LastVehicleNoQry lastVehicleNoQry) { + return SingleResponse.of(purchaseOrderService.getLastVehicleNo(lastVehicleNoQry)); + } + } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/LastVehicleNoQryExe.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/LastVehicleNoQryExe.java new file mode 100644 index 0000000..c3f9288 --- /dev/null +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/executor/query/LastVehicleNoQryExe.java @@ -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); + } +} \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/PurchaseOrderServiceImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/PurchaseOrderServiceImpl.java index 7ff5fd5..dd3f60d 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/PurchaseOrderServiceImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/app/service/PurchaseOrderServiceImpl.java @@ -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.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.PurchaseOrderListQry; 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.base.dto.PageDTO; 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.PurchaseOrderListQryExe; -import com.xunhong.erp.turbo.biz.app.executor.query.PurchaseOrderPageQryExe; -import com.xunhong.erp.turbo.biz.app.executor.query.PurchaseOrderShowQryExe; +import com.xunhong.erp.turbo.biz.app.executor.query.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboService; @@ -48,6 +46,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderServiceI { private final PurchaseOrderStep2CmdExe purchaseOrderStep2CmdExe; private final PurchaseOrderStep3CmdExe purchaseOrderStep3CmdExe; + private final LastVehicleNoQryExe lastVehicleNoQryExe; + @Override public PurchaseOrderVO create(PurchaseOrderCreateCmd purchaseOrderCreateCmd) { return purchaseOrderCreateCmdExe.execute(purchaseOrderCreateCmd); @@ -128,4 +128,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderServiceI { public void saveStep3(PurchaseOrderStep3Cmd purchaseOrderStep3Cmd) { purchaseOrderStep3CmdExe.execute(purchaseOrderStep3Cmd); } + + @Override + public String getLastVehicleNo(LastVehicleNoQry lastVehicleNoQry) { + return lastVehicleNoQryExe.execute(lastVehicleNoQry); + } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/CostItem.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/CostItem.java index ffb6991..c069b8b 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/CostItem.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/entity/CostItem.java @@ -47,6 +47,11 @@ public class CostItem extends DTO { */ private Boolean showInEntry; + /** + * 是否需要填写数量和单价 + */ + private Boolean requireQuantityAndPrice; + /** * 备注 */ diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/PurchaseOrderGateway.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/PurchaseOrderGateway.java index b61f319..a1f0f44 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/PurchaseOrderGateway.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/domain/gateway/PurchaseOrderGateway.java @@ -2,6 +2,7 @@ package com.xunhong.erp.turbo.biz.domain.gateway; import com.baomidou.mybatisplus.core.metadata.IPage; 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.PurchaseOrderListQry; import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderPageQry; @@ -44,4 +45,12 @@ public interface PurchaseOrderGateway { void rejectFinal(PurchaseOrderRejectFinalCmd purchaseOrderRejectFinalCmd); Long countBy(PurchaseOrderCountQry purchaseOrderCountQry); + + /** + * 获取上一车的车次号 + * + * @param lastVehicleNoQry 查询参数 + * @return 车次号 + */ + String getLastVehicleNo(LastVehicleNoQry lastVehicleNoQry); } \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/CostItemConvert.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/CostItemConvert.java index ece15a7..e74bf54 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/CostItemConvert.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/convert/CostItemConvert.java @@ -17,12 +17,14 @@ public interface CostItemConvert { CostItem toCostItem(CostItemDO costItemDO); + @Mapping(target = "sort", ignore = true) @Mapping(target = "version", ignore = true) @Mapping(target = "updatedAt", ignore = true) @Mapping(target = "isDelete", ignore = true) @Mapping(target = "createdAt", ignore = true) CostItemDO toCostItemDO(CostItemCreateCmd costItemCreateCmd); + @Mapping(target = "sort", ignore = true) @Mapping(target = "version", ignore = true) @Mapping(target = "updatedAt", ignore = true) @Mapping(target = "isDelete", ignore = true) diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/CostItemDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/CostItemDO.java index 28c5438..164c7e5 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/CostItemDO.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/CostItemDO.java @@ -55,6 +55,12 @@ public class CostItemDO extends BaseDO { @TableField(value = "show_in_entry") private Boolean showInEntry; + /** + * 是否需要填写数量和单价 + */ + @TableField(value = "require_quantity_and_price") + private Boolean requireQuantityAndPrice; + /** * 备注 */ diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderDealerDO.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderDealerDO.java index 345d13d..8585e5a 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderDealerDO.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/entity/OrderDealerDO.java @@ -80,34 +80,58 @@ public class OrderDealerDO extends BaseDO { @TableField(value = "include_packing_flag") 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-成本单 */ @TableField(value = "document_types") private String documentTypes; - + /** * 税费补贴 */ @TableField(value = "tax_subsidy") private BigDecimal taxSubsidy; - + /** * 计提税金 */ @TableField(value = "tax_provision") private BigDecimal taxProvision; - + /** * 成本差异 */ @TableField(value = "cost_difference") private BigDecimal costDifference; - + /** * 利润分成 */ @TableField(value = "profit_sharing") private BigDecimal profitSharing; -} \ No newline at end of file +} diff --git a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PurchaseOrderGatewayImpl.java b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PurchaseOrderGatewayImpl.java index f88416d..354bcae 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PurchaseOrderGatewayImpl.java +++ b/erp-turbo-business/erp-turbo-biz/src/main/java/com/xunhong/erp/turbo/biz/infrastructure/gateway/PurchaseOrderGatewayImpl.java @@ -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.PurchaseOrderStateEnum; 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.PurchaseOrderPageQry; import com.xunhong.erp.turbo.api.biz.dto.qry.PurchaseOrderShowQry; @@ -921,5 +922,16 @@ public class PurchaseOrderGatewayImpl implements PurchaseOrderGateway { // 执行插入操作 costsToInsert.forEach(orderCostMapper::insert); } + + @Override + public String getLastVehicleNo(LastVehicleNoQry lastVehicleNoQry) { + LambdaQueryWrapper 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; + } } diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostItemMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostItemMapper.xml index c7b9f6d..8597db6 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostItemMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/CostItemMapper.xml @@ -11,6 +11,7 @@ + @@ -19,5 +20,4 @@ - - + \ No newline at end of file diff --git a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderDealerMapper.xml b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderDealerMapper.xml index 09476c7..89ca83d 100644 --- a/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderDealerMapper.xml +++ b/erp-turbo-business/erp-turbo-biz/src/main/resources/mapper/OrderDealerMapper.xml @@ -15,6 +15,10 @@ + + + + @@ -26,4 +30,4 @@ - \ No newline at end of file + diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/PurchaseOrderServiceI.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/PurchaseOrderServiceI.java index 25e04aa..a5165e3 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/PurchaseOrderServiceI.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/api/PurchaseOrderServiceI.java @@ -1,6 +1,7 @@ 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.qry.LastVehicleNoQry; 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.PurchaseOrderPageQry; @@ -44,4 +45,12 @@ public interface PurchaseOrderServiceI { PurchaseOrderVO saveStep1(PurchaseOrderStep1Cmd purchaseOrderStep1Cmd); void saveStep2(PurchaseOrderStep2Cmd purchaseOrderStep2Cmd); void saveStep3(PurchaseOrderStep3Cmd purchaseOrderStep3Cmd); + + /** + * 获取上一车的车次号 + * + * @param lastVehicleNoQry 查询参数 + * @return 车次号 + */ + String getLastVehicleNo(LastVehicleNoQry lastVehicleNoQry); } \ No newline at end of file diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/CostItemCreateCmd.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/CostItemCreateCmd.java index 8df8f19..dcd0fb4 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/CostItemCreateCmd.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/cmd/CostItemCreateCmd.java @@ -52,6 +52,12 @@ public class CostItemCreateCmd extends Command { @Schema(title = "是否在录入时显示", requiredMode = Schema.RequiredMode.REQUIRED) 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) private Boolean status; -} - +} \ No newline at end of file diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderDealer.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderDealer.java index 21aa916..13b0ac7 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderDealer.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/common/OrderDealer.java @@ -76,33 +76,57 @@ public class OrderDealer extends Command { @Schema(title = "发货单合计金额是否含包装费") 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-成本单 */ @Schema(title = "单据类型:delivery-发货单, purchase-采购底单, cost-成本单") private String documentTypes; - + /** * 税费补贴 */ @Schema(title = "税费补贴") private BigDecimal taxSubsidy; - + /** * 计提税金 */ @Schema(title = "计提税金") private BigDecimal taxProvision; - + /** * 成本差异 */ @Schema(title = "成本差异") private BigDecimal costDifference; - + /** * 利润分成 */ @Schema(title = "利润分成") private BigDecimal profitSharing; -} \ No newline at end of file +} diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/CostItemCostTypeEnum.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/CostItemCostTypeEnum.java index 2a98e62..8c9532a 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/CostItemCostTypeEnum.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/enums/CostItemCostTypeEnum.java @@ -8,12 +8,14 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public enum CostItemCostTypeEnum { /** - * 费用类型:1_包装材料;2_人工费用;3_其他费用;4_固定费用;4_固定费用 + * 费用类型:1_包装材料;2_人工费用;3_其他费用;4_固定费用;5_工头垫付;6_产地垫付 */ PACKAGING_MATERIALS(1, "包装材料"), HUMAN_COST(2, "人工费用"), OTHER_COST(3, "其他费用"), FIXED_COST(4, "固定费用"), + WORKER_ADVANCE(5, "工头垫付"), + PRODUCTION_ADVANCE(6, "产地垫付"), ; @EnumValue diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/LastVehicleNoQry.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/LastVehicleNoQry.java new file mode 100644 index 0000000..0dfa431 --- /dev/null +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/qry/LastVehicleNoQry.java @@ -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 { +} \ No newline at end of file diff --git a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/CostItemVO.java b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/CostItemVO.java index b9f9fc7..aebfcf1 100644 --- a/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/CostItemVO.java +++ b/erp-turbo-common/erp-turbo-api/src/main/java/com/xunhong/erp/turbo/api/biz/dto/vo/CostItemVO.java @@ -53,6 +53,12 @@ public class CostItemVO extends DTO { @Schema(title = "是否在录入时显示", requiredMode = Schema.RequiredMode.REQUIRED) private Boolean showInEntry; + /** + * 是否需要填写数量和单价 + */ + @Schema(title = "是否需要填写数量和单价", requiredMode = Schema.RequiredMode.REQUIRED) + private Boolean requireQuantityAndPrice; + /** * 备注 */ @@ -71,5 +77,4 @@ public class CostItemVO extends DTO { @Schema(title = "创建时间") private LocalDateTime createdAt; -} - +} \ No newline at end of file