diff --git a/src/main/java/com/niuan/erp/common/base/BaseApproveAndRejectDto.java b/src/main/java/com/niuan/erp/common/base/BaseApproveAndRejectDto.java index d3956e4..537bd50 100644 --- a/src/main/java/com/niuan/erp/common/base/BaseApproveAndRejectDto.java +++ b/src/main/java/com/niuan/erp/common/base/BaseApproveAndRejectDto.java @@ -1,6 +1,8 @@ package com.niuan.erp.common.base; +import jakarta.validation.constraints.NotNull; public record BaseApproveAndRejectDto( + @NotNull(message = "validation.common.id.notNull") Long id ) {} diff --git a/src/main/java/com/niuan/erp/module/purchase/entity/PurchasePlanItem.java b/src/main/java/com/niuan/erp/module/purchase/entity/PurchasePlanItem.java index e0b02c7..f435e8a 100644 --- a/src/main/java/com/niuan/erp/module/purchase/entity/PurchasePlanItem.java +++ b/src/main/java/com/niuan/erp/module/purchase/entity/PurchasePlanItem.java @@ -24,7 +24,7 @@ import java.math.BigDecimal; @Setter @ToString @TableName("purchaseplandetails") -public class PurchasePlanItem implements Serializable { +public class PurchasePlanItem implements Serializable { private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/niuan/erp/module/warehouse/controller/StockTransferOrderController.java b/src/main/java/com/niuan/erp/module/warehouse/controller/StockTransferOrderController.java index dd08df8..347d451 100644 --- a/src/main/java/com/niuan/erp/module/warehouse/controller/StockTransferOrderController.java +++ b/src/main/java/com/niuan/erp/module/warehouse/controller/StockTransferOrderController.java @@ -3,19 +3,19 @@ package com.niuan.erp.module.warehouse.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.niuan.erp.common.annotation.ApiLog; import com.niuan.erp.common.annotation.ModuleLog; +import com.niuan.erp.common.base.BaseApproveAndRejectDto; import com.niuan.erp.common.base.BaseDeleteBody; import com.niuan.erp.common.base.BasePageReqParams; import com.niuan.erp.common.base.BaseResult; import com.niuan.erp.common.base.CommonValidateGroup.*; import com.niuan.erp.common.base.OperationType; +import com.niuan.erp.module.warehouse.controller.dto.StockTransferOrderAddDto; import com.niuan.erp.module.warehouse.controller.dto.StockTransferOrderDto; import com.niuan.erp.module.warehouse.controller.dto.StockTransferOrderItemDto; import com.niuan.erp.module.warehouse.controller.dto.StockTransferOrderSearchParams; import com.niuan.erp.module.warehouse.service.StockTransferOrderService; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; @@ -40,11 +40,20 @@ public class StockTransferOrderController { return BaseResult.successWithData(stockTransferOrderService.getStockTransferOrderPage(pageParams, searchParams)); } + @ApiLog(type = OperationType.ADD, remark = "新增一条StockTransferOrder记录") + @Operation(summary = "新增StockTransferOrder", operationId = "addStockTransferOrder") + @PostMapping("/addStockTransferOrder") + @PreAuthorize("hasAuthority('stock_transfer_order:add')") + public BaseResult addStockTransferOrder(@Validated(Add.class) @RequestBody StockTransferOrderAddDto dto) { + stockTransferOrderService.addStockTransferOrder(dto); + return BaseResult.success(); + } + @ApiLog(type = OperationType.UPDATE, remark = "更新一条StockTransferOrder记录") @Operation(summary = "更新StockTransferOrder", operationId = "updateStockTransferOrder") @PostMapping("/updateStockTransferOrder") @PreAuthorize("hasAuthority('stock_transfer_order:update')") - public BaseResult updateStockTransferOrder(@Validated(Update.class) @RequestBody StockTransferOrderDto dto) { + public BaseResult updateStockTransferOrder(@Validated(Update.class) @RequestBody StockTransferOrderAddDto dto) { stockTransferOrderService.updateStockTransferOrder(dto); return BaseResult.success(); } @@ -71,19 +80,17 @@ public class StockTransferOrderController { @Operation(summary = "审核StockTransferOrder", operationId = "approveStockTransferOrder") @PostMapping("/approveStockTransferOrder") @PreAuthorize("hasAuthority('stock_transfer_order:approve')") - public BaseResult approveStockTransferOrder( - @Parameter(description = "调拨单ID") @RequestParam Long id) { - stockTransferOrderService.approve(id); + public BaseResult approveStockTransferOrder(@Validated @RequestBody BaseApproveAndRejectDto dto) { + stockTransferOrderService.approve(dto.id()); return BaseResult.success(); } @ApiLog(type = OperationType.UPDATE, remark = "反审核StockTransferOrder") - @Operation(summary = "反审核StockTransferOrder", operationId = "unapproveStockTransferOrder") + @Operation(summary = "反审核StockTransferOrder", operationId = "rejectStockTransferOrder") @PostMapping("/rejectStockTransferOrder") @PreAuthorize("hasAuthority('stock_transfer_order:reject')") - public BaseResult rejectStockTransferOrder( - @Parameter(description = "调拨单ID") @RequestParam Long id) { - stockTransferOrderService.reject(id); + public BaseResult rejectStockTransferOrder(@Validated @RequestBody BaseApproveAndRejectDto dto) { + stockTransferOrderService.reject(dto.id()); return BaseResult.success(); } @@ -91,10 +98,7 @@ public class StockTransferOrderController { @GetMapping("/getStockTransferOrderItem") @PreAuthorize("hasAuthority('stock_transfer_order:index')") public BaseResult> getStockTransferOrderItem( - @Parameter(description = "调拨单ID") - @RequestParam - @NotNull(message = "warehouse.stock_transfer_order.validate.order_id.not_null") - Long orderId) { + @RequestParam("orderId") Long orderId) { return BaseResult.successWithData(stockTransferOrderService.getItem(orderId)); } } diff --git a/src/main/java/com/niuan/erp/module/warehouse/controller/dto/StockTransferOrderAddDto.java b/src/main/java/com/niuan/erp/module/warehouse/controller/dto/StockTransferOrderAddDto.java index 1c307d8..1d0a7ff 100644 --- a/src/main/java/com/niuan/erp/module/warehouse/controller/dto/StockTransferOrderAddDto.java +++ b/src/main/java/com/niuan/erp/module/warehouse/controller/dto/StockTransferOrderAddDto.java @@ -6,6 +6,7 @@ import java.util.List; /** * 添加调拨单的 Dto + * @param id 调拨单ID(编辑时需要) * @param formCode * @param formName * @param formMark @@ -16,6 +17,7 @@ import java.util.List; * @param transferOrderItems */ public record StockTransferOrderAddDto( + Long id, @NotNull(message = "warehouse.stock_transfer_order.validate.form_code.not_null") String formCode, @NotNull(message = "warehouse.stock_transfer_order.validate.form_name.not_null") diff --git a/src/main/java/com/niuan/erp/module/warehouse/controller/dto/StockTransferOrderDto.java b/src/main/java/com/niuan/erp/module/warehouse/controller/dto/StockTransferOrderDto.java index a5284f4..72aab1d 100644 --- a/src/main/java/com/niuan/erp/module/warehouse/controller/dto/StockTransferOrderDto.java +++ b/src/main/java/com/niuan/erp/module/warehouse/controller/dto/StockTransferOrderDto.java @@ -5,6 +5,19 @@ import com.fasterxml.jackson.annotation.JsonInclude; import java.time.LocalDateTime; import java.util.List; +/** + * 前端展示 Dto + * @param id + * @param storeNo + * @param storeName + * @param outStoreNo + * @param outStoreName + * @param formCode + * @param formName + * @param formMark + * @param formStatus + * @param orderItems + */ @JsonInclude(JsonInclude.Include.NON_NULL) public record StockTransferOrderDto( Long id, diff --git a/src/main/java/com/niuan/erp/module/warehouse/service/StockTransferOrderService.java b/src/main/java/com/niuan/erp/module/warehouse/service/StockTransferOrderService.java index 211eaf1..a2294a3 100644 --- a/src/main/java/com/niuan/erp/module/warehouse/service/StockTransferOrderService.java +++ b/src/main/java/com/niuan/erp/module/warehouse/service/StockTransferOrderService.java @@ -18,7 +18,7 @@ public interface StockTransferOrderService { void addStockTransferOrder(StockTransferOrderAddDto dto); - void updateStockTransferOrder(StockTransferOrderDto dto); + void updateStockTransferOrder(StockTransferOrderAddDto dto); void deleteStockTransferOrder(long id); diff --git a/src/main/java/com/niuan/erp/module/warehouse/service/impl/StockTransferOrderServiceImpl.java b/src/main/java/com/niuan/erp/module/warehouse/service/impl/StockTransferOrderServiceImpl.java index 4f2aebf..49a3e32 100644 --- a/src/main/java/com/niuan/erp/module/warehouse/service/impl/StockTransferOrderServiceImpl.java +++ b/src/main/java/com/niuan/erp/module/warehouse/service/impl/StockTransferOrderServiceImpl.java @@ -18,6 +18,8 @@ import com.niuan.erp.module.warehouse.controller.dto.*; import com.niuan.erp.module.warehouse.converter.StockTransferOrderConverter; import com.niuan.erp.module.warehouse.entity.Stock; import com.niuan.erp.module.warehouse.entity.WarehouseItem; +import com.niuan.erp.module.warehouse.entity.Warehouse; +import com.niuan.erp.module.warehouse.mapper.WarehouseMapper; import com.niuan.erp.module.warehouse.mapper.StockMapper; import com.niuan.erp.module.warehouse.mapper.WarehouseItemMapper; import com.niuan.erp.module.warehouse.service.StockTransferOrderService; @@ -48,6 +50,8 @@ public class StockTransferOrderServiceImpl extends ServiceImpl getStockTransferOrderPage(BasePageReqParams pageParams, StockTransferOrderSearchParams searchParams) { @@ -93,6 +97,17 @@ public class StockTransferOrderServiceImpl extends ServiceImpl materialWrapper = new LambdaQueryWrapper<>(); + materialWrapper.eq(DocumentMaterial::getDocumentNo, dto.id()); + documentMaterialMapper.delete(materialWrapper); + + List materials = stockTransferOrderConverter.toEntityList(dto.transferOrderItems()); + + Map> warehouseItems = + warehouseItemMapper.getWarehouseItemStockListByPartNumbers(materials.stream() + .map(DocumentMaterial::getPartNumber) + .toList()); + + materials.forEach(m -> { + m.setDocumentNo(entity.getId().intValue()); + m.setCreateUserId(SecurityUtils.getUserId()); + m.setCreateUserName(SecurityUtils.getUserName()); + m.setCreateDate(LocalDateTime.now()); + m.setStatus(0); + Map stockInfo = warehouseItems.get(m.getPartNumber()); + if (stockInfo != null) { + m.setDemandCount(((Long) stockInfo.get("productCount")).intValue()); + } + }); + + documentMaterialMapper.insert(materials); + } } @Override diff --git a/src/main/resources/i18n/messages.properties b/src/main/resources/i18n/messages.properties index 0798067..d02d640 100644 --- a/src/main/resources/i18n/messages.properties +++ b/src/main/resources/i18n/messages.properties @@ -7,6 +7,7 @@ auth.userDetailsError=用户信息错误 validation.common.status.notNull=状态值不能为空 validation.common.status.valueError=状态值只能为 0 或 1 validation.common.status.idNull=ID 不能为空 +validation.common.id.notNull=ID 不能为空 validation.common.pageParams.page.notNull=页数不能为空 validation.common.pageParams.pageSize.notNull=页数不能为空 validation.common.pageParams.page.min=页数不能小于0 diff --git a/src/main/resources/i18n/messages_zh_CN.properties b/src/main/resources/i18n/messages_zh_CN.properties index 7abd6c8..21ef143 100644 --- a/src/main/resources/i18n/messages_zh_CN.properties +++ b/src/main/resources/i18n/messages_zh_CN.properties @@ -39,6 +39,7 @@ warehouse.stock_transfer_order.validate.product_count.not_null=调拨数量不 warehouse.stock_transfer_order.validate.product_count.min=调拨数量必须大于 0 warehouse.stock_transfer_order.validate.part_id.not_null=物料 ID 不能为空 warehouse.stock_transfer_order.exception.not_found=调拨单不存在 +warehouse.stock_transfer_order.exception.id_required=调拨单ID不能为空 warehouse.stock_transfer_order.exception.cannot_update_approved=已审核的调拨单不能修改 warehouse.stock_transfer_order.exception.cannot_delete_approved=已审核的调拨单不能删除 warehouse.stock_transfer_order.exception.cannot_delete_approved_batch=选中的数据中存在已审核的调拨单,不能删除