diff --git a/src/main/java/com/niuan/erp/common/utils/SystemAuthFactory.java b/src/main/java/com/niuan/erp/common/utils/SystemAuthFactory.java index fddde2b..f891b65 100644 --- a/src/main/java/com/niuan/erp/common/utils/SystemAuthFactory.java +++ b/src/main/java/com/niuan/erp/common/utils/SystemAuthFactory.java @@ -64,6 +64,7 @@ public class SystemAuthFactory { switch (p.getPermissionType()) { case TOP_PAGE_BUTTON -> saveInButtonAuthList(menuConfig.getMeta().getButtonAuth(), buttonProp); case TABLE_OPERATOR_BUTTON -> saveInButtonAuthList(menuConfig.getMeta().getToolButtonAuth(), buttonProp); + case TABLE_STATUS_BUTTON -> saveInButtonAuthList(menuConfig.getMeta().getStatusButtonAuth(), buttonProp); case DIALOG_BUTTON -> saveInButtonAuthList(menuConfig.getMeta().getDialogButtonAuth(), buttonProp); } } diff --git a/src/main/java/com/niuan/erp/module/auth/controller/dto/RouterConfigRawMeta.java b/src/main/java/com/niuan/erp/module/auth/controller/dto/RouterConfigRawMeta.java index 665c592..0d1a9b5 100644 --- a/src/main/java/com/niuan/erp/module/auth/controller/dto/RouterConfigRawMeta.java +++ b/src/main/java/com/niuan/erp/module/auth/controller/dto/RouterConfigRawMeta.java @@ -137,6 +137,11 @@ public class RouterConfigRawMeta { */ private List toolButtonAuth = new ArrayList<>(); + /** + * + */ + private List statusButtonAuth = new ArrayList<>(); + /** * Dialog Button 权限 */ diff --git a/src/main/java/com/niuan/erp/module/common/entity/DocumentMaterialWithInfo.java b/src/main/java/com/niuan/erp/module/common/entity/DocumentMaterialWithInfo.java new file mode 100644 index 0000000..f5c51d2 --- /dev/null +++ b/src/main/java/com/niuan/erp/module/common/entity/DocumentMaterialWithInfo.java @@ -0,0 +1,13 @@ +package com.niuan.erp.module.common.entity; + +import lombok.Getter; +import lombok.Setter; + + +@Getter +@Setter +public class DocumentMaterialWithInfo extends DocumentMaterial { + + private String productSpecs; + +} diff --git a/src/main/java/com/niuan/erp/module/common/mapper/DocumentMapper.java b/src/main/java/com/niuan/erp/module/common/mapper/DocumentMapper.java index 0dece08..abaeb9b 100644 --- a/src/main/java/com/niuan/erp/module/common/mapper/DocumentMapper.java +++ b/src/main/java/com/niuan/erp/module/common/mapper/DocumentMapper.java @@ -1,7 +1,10 @@ package com.niuan.erp.module.common.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.niuan.erp.module.common.entity.Document; +import com.niuan.erp.module.common.enums.DocumentType; /** *

@@ -13,4 +16,9 @@ import com.niuan.erp.module.common.entity.Document; */ public interface DocumentMapper extends BaseMapper { + IPage selectPageByPartNumber(Page page, + String searchCode, + String partNumber, + DocumentType documentType); + } diff --git a/src/main/java/com/niuan/erp/module/common/mapper/DocumentMaterialMapper.java b/src/main/java/com/niuan/erp/module/common/mapper/DocumentMaterialMapper.java index c8441bf..d52c964 100644 --- a/src/main/java/com/niuan/erp/module/common/mapper/DocumentMaterialMapper.java +++ b/src/main/java/com/niuan/erp/module/common/mapper/DocumentMaterialMapper.java @@ -2,6 +2,11 @@ package com.niuan.erp.module.common.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.niuan.erp.module.common.entity.DocumentMaterial; +import com.niuan.erp.module.common.entity.DocumentMaterialWithInfo; +import com.niuan.erp.module.common.enums.DocumentType; + +import java.util.List; +import java.util.Map; /** *

@@ -13,4 +18,6 @@ import com.niuan.erp.module.common.entity.DocumentMaterial; */ public interface DocumentMaterialMapper extends BaseMapper { + List selectByPartNumber(List documentIds, String partNumber); + } 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 4bad0c2..dd08df8 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 @@ -1,6 +1,5 @@ package com.niuan.erp.module.warehouse.controller; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.niuan.erp.common.annotation.ApiLog; import com.niuan.erp.common.annotation.ModuleLog; @@ -9,20 +8,18 @@ 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.common.entity.Document; -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.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -39,24 +36,8 @@ public class StockTransferOrderController { @GetMapping("/getStockTransferOrderPage") @PreAuthorize("hasAuthority('stock_transfer_order:index')") public BaseResult> getStockTransferOrderPage(@Validated BasePageReqParams pageParams, - @Validated(Get.class) StockTransferOrderDto searchParams) { - var wrapper = new LambdaQueryWrapper(); - if (searchParams != null) { - if (StringUtils.hasText(searchParams.searchCode())) { - wrapper.like(Document::getFormCode, searchParams.searchCode()); - } - } - return BaseResult.successWithData(stockTransferOrderService.getStockTransferOrderPage(pageParams, wrapper)); - } - - - @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(); + StockTransferOrderSearchParams searchParams) { + return BaseResult.successWithData(stockTransferOrderService.getStockTransferOrderPage(pageParams, searchParams)); } @ApiLog(type = OperationType.UPDATE, remark = "更新一条StockTransferOrder记录") @@ -98,27 +79,22 @@ public class StockTransferOrderController { @ApiLog(type = OperationType.UPDATE, remark = "反审核StockTransferOrder") @Operation(summary = "反审核StockTransferOrder", operationId = "unapproveStockTransferOrder") - @PostMapping("/unapproveStockTransferOrder") - @PreAuthorize("hasAuthority('stock_transfer_order:unapprove')") - public BaseResult unapproveStockTransferOrder( + @PostMapping("/rejectStockTransferOrder") + @PreAuthorize("hasAuthority('stock_transfer_order:reject')") + public BaseResult rejectStockTransferOrder( @Parameter(description = "调拨单ID") @RequestParam Long id) { - stockTransferOrderService.unapprove(id); + stockTransferOrderService.reject(id); return BaseResult.success(); } @Operation(summary = "获取StockTransferOrder明细", operationId = "getStockTransferOrderDetail") - @GetMapping("/getStockTransferOrderDetail") - @PreAuthorize("hasAuthority('stocktransferorder:index')") - public BaseResult> getStockTransferOrderDetail( - @Parameter(description = "调拨单ID") @RequestParam Long id) { - return BaseResult.successWithData(stockTransferOrderService.getDetail(id)); - } - - @Operation(summary = "导入StockTransferOrder明细", operationId = "importStockTransferOrderItems") - @PostMapping("/importStockTransferOrderItems") - @PreAuthorize("hasAuthority('stock_transfer_order:add')") - public BaseResult> importStockTransferOrderItems( - @Parameter(description = "Excel文件") @RequestParam("file") MultipartFile file) { - return BaseResult.successWithData(stockTransferOrderService.importItems(file)); + @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) { + return BaseResult.successWithData(stockTransferOrderService.getItem(orderId)); } } 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 4479c2c..a5284f4 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 @@ -1,30 +1,20 @@ package com.niuan.erp.module.warehouse.controller.dto; -import java.time.LocalDateTime; +import com.fasterxml.jackson.annotation.JsonInclude; +import java.time.LocalDateTime; +import java.util.List; + +@JsonInclude(JsonInclude.Include.NON_NULL) public record StockTransferOrderDto( - Long id, - Integer status, - LocalDateTime createDate, - Long createUserId, - String createUserName, - LocalDateTime updateDate, - Long updateUserId, - String updateUserName, - Integer storeNo, - String storeName, - Integer formType, - String formCode, - String formName, - Integer formStatus, - String formMark, - Integer reserve1, - String reserve2, - Integer vendorNo, - String vendorName, - Double totalValue, - Integer outStoreNo, - String outStoreName, - Integer groupId, - Integer customerId, - String searchCode) {} \ No newline at end of file + Long id, + LocalDateTime createDate, + Integer storeNo, + String storeName, + Integer outStoreNo, + String outStoreName, + String formCode, + String formName, + String formMark, + Integer formStatus, + List orderItems) {} \ No newline at end of file diff --git a/src/main/java/com/niuan/erp/module/warehouse/controller/dto/StockTransferOrderSearchParams.java b/src/main/java/com/niuan/erp/module/warehouse/controller/dto/StockTransferOrderSearchParams.java new file mode 100644 index 0000000..d162f6f --- /dev/null +++ b/src/main/java/com/niuan/erp/module/warehouse/controller/dto/StockTransferOrderSearchParams.java @@ -0,0 +1,6 @@ +package com.niuan.erp.module.warehouse.controller.dto; + +public record StockTransferOrderSearchParams( + String searchCode, + String partNumber +) {} diff --git a/src/main/java/com/niuan/erp/module/warehouse/converter/StockTransferOrderConverter.java b/src/main/java/com/niuan/erp/module/warehouse/converter/StockTransferOrderConverter.java index 2859d32..dadf048 100644 --- a/src/main/java/com/niuan/erp/module/warehouse/converter/StockTransferOrderConverter.java +++ b/src/main/java/com/niuan/erp/module/warehouse/converter/StockTransferOrderConverter.java @@ -2,6 +2,7 @@ package com.niuan.erp.module.warehouse.converter; import com.niuan.erp.module.common.entity.Document; import com.niuan.erp.module.common.entity.DocumentMaterial; +import com.niuan.erp.module.common.entity.DocumentMaterialWithInfo; 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.StockTransferOrderItemAddDto; @@ -17,12 +18,10 @@ public interface StockTransferOrderConverter { Document toEntity(StockTransferOrderDto dto); Document toEntity(StockTransferOrderAddDto dto); StockTransferOrderDto toDto(Document entity); - List toDtoList(List entities); DocumentMaterial toEntity(StockTransferOrderItemAddDto dto); List toEntityList(List dtoList); - @Mapping(target = "productSpec", ignore = true) - StockTransferOrderItemDto toItemDto(DocumentMaterial entity); + StockTransferOrderItemDto toItemDto(DocumentMaterialWithInfo entity); List toItemDtoList(List entities); } \ No newline at end of file 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 0896f71..211eaf1 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 @@ -1,19 +1,20 @@ package com.niuan.erp.module.warehouse.service; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.niuan.erp.common.base.BasePageReqParams; -import com.niuan.erp.module.common.entity.Document; 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 org.springframework.web.multipart.MultipartFile; +import com.niuan.erp.module.warehouse.controller.dto.StockTransferOrderSearchParams; import java.util.List; public interface StockTransferOrderService { - IPage getStockTransferOrderPage(BasePageReqParams pageParams, LambdaQueryWrapper wrapper); + IPage getStockTransferOrderPage(BasePageReqParams pageParams, + StockTransferOrderSearchParams searchParams); + + List getItem(long id); void addStockTransferOrder(StockTransferOrderAddDto dto); @@ -25,9 +26,6 @@ public interface StockTransferOrderService { void approve(long id); - void unapprove(long id); + void reject(long id); - List getDetail(long id); - - List importItems(MultipartFile file); } 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 a8e3bc7..4f2aebf 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 @@ -14,10 +14,7 @@ import com.niuan.erp.module.common.enums.DocumentType; import com.niuan.erp.module.common.enums.FormStatus; import com.niuan.erp.module.common.mapper.DocumentMapper; import com.niuan.erp.module.common.mapper.DocumentMaterialMapper; -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.StockTransferOrderItemAddDto; -import com.niuan.erp.module.warehouse.controller.dto.StockTransferOrderItemDto; +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; @@ -52,8 +49,41 @@ public class StockTransferOrderServiceImpl extends ServiceImpl getStockTransferOrderPage(BasePageReqParams pageParams, LambdaQueryWrapper wrapper) { - wrapper.eq(Document::getFormType, DocumentType.STOCK_TRANSFER_ORDER); + public IPage getStockTransferOrderPage(BasePageReqParams pageParams, + StockTransferOrderSearchParams searchParams) { + var wrapper = new LambdaQueryWrapper() + .eq(Document::getFormType, DocumentType.STOCK_TRANSFER_ORDER) + .orderByDesc(Document::getCreateDate); + if (searchParams != null) { + if (StringUtils.hasText(searchParams.searchCode())) { + wrapper.like(Document::getFormCode, searchParams.searchCode()) + .or().like(Document::getFormName, searchParams.searchCode()) + .or().like(Document::getFormMark, searchParams.searchCode()); + } + if (StringUtils.hasText(searchParams.partNumber())) { + var orderPage = this.baseMapper.selectPageByPartNumber( + new Page<>(pageParams.page(), pageParams.pageSize()), + searchParams.searchCode(), + searchParams.partNumber(), + DocumentType.STOCK_TRANSFER_ORDER); + var items = documentMaterialMapper.selectByPartNumber( + orderPage.getRecords().stream().map(Document::getId).toList(), searchParams.partNumber()); + return orderPage.convert(order -> new StockTransferOrderDto( + order.getId(), + order.getCreateDate(), + order.getStoreNo(), + order.getStoreName(), + order.getOutStoreNo(), + order.getOutStoreName(), + order.getFormCode(), + order.getFormName(), + order.getFormMark(), + order.getFormStatus().getValue(), + items.stream() + .filter(item -> item.getDocumentNo().equals(order.getId().intValue())) + .map(stockTransferOrderConverter::toItemDto).toList())); + } + } IPage result = this.baseMapper.selectPage(new Page<>(pageParams.page(), pageParams.pageSize()), wrapper); return result.convert(stockTransferOrderConverter::toDto); } @@ -246,7 +276,7 @@ public class StockTransferOrderServiceImpl extends ServiceImpl getDetail(long id) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(DocumentMaterial::getDocumentNo, id); - List materials = documentMaterialMapper.selectList(wrapper); - return stockTransferOrderConverter.toItemDtoList(materials); - } - - @Override - public List importItems(MultipartFile file) { - if (file == null || file.isEmpty()) { - throw new BusinessException("warehouse.stock_transfer_order.exception.file_empty"); - } - - try (Workbook workbook = WorkbookFactory.create(file.getInputStream())) { - Sheet sheet = workbook.getSheetAt(0); - List items = new ArrayList<>(); - - for (int i = 1; i <= sheet.getLastRowNum(); i++) { - Row row = sheet.getRow(i); - if (row == null) continue; - - String partNumber = getCellValueAsString(row.getCell(0)); - String productSpec = getCellValueAsString(row.getCell(1)); - String countStr = getCellValueAsString(row.getCell(2)); - - if (!StringUtils.hasText(partNumber)) continue; - - int productCount = 0; - if (StringUtils.hasText(countStr)) { - try { - productCount = Integer.parseInt(countStr); - } catch (NumberFormatException e) { - productCount = 0; - } - } - - StockTransferOrderItemDto item = new StockTransferOrderItemDto( - null, null, null, null, null, null, null, null, - null, partNumber, null, productCount, null, null, null, null, null, null, productSpec - ); - items.add(item); - } - - return items; - } catch (IOException e) { - throw new BusinessException("warehouse.stock_transfer_order.exception.import_failed"); - } + public List getItem(long id) { + var items = documentMaterialMapper.selectByPartNumber(List.of(id), null); + return items.stream().map(stockTransferOrderConverter::toItemDto).toList(); } private void validateTransferOrder(StockTransferOrderAddDto dto) { @@ -408,16 +394,4 @@ public class StockTransferOrderServiceImpl extends ServiceImpl cell.getStringCellValue().trim(); - case NUMERIC -> String.valueOf((long) cell.getNumericCellValue()); - case BOOLEAN -> String.valueOf(cell.getBooleanCellValue()); - default -> ""; - }; - } } \ No newline at end of file diff --git a/src/main/resources/i18n/messages.properties b/src/main/resources/i18n/messages.properties index 7d97aa4..0798067 100644 --- a/src/main/resources/i18n/messages.properties +++ b/src/main/resources/i18n/messages.properties @@ -28,6 +28,7 @@ warehouse.stock_transfer_order.validate.product_spec.not_null=物料型号不能 warehouse.stock_transfer_order.validate.product_count.not_null=调拨数量不能为空 warehouse.stock_transfer_order.validate.product_count.min=调拨数量不能小于 1 warehouse.stock_transfer_order.validate.part_id.not_null=物料 ID 不能为空 +warehouse.stock_transfer_order.validate.order_id.not_null=调拨单 ID 不能为空 # ==========>> 生产管理 diff --git a/src/main/resources/mapper/common/DocumentMapper.xml b/src/main/resources/mapper/common/DocumentMapper.xml index 2acb5a0..bede7a8 100644 --- a/src/main/resources/mapper/common/DocumentMapper.xml +++ b/src/main/resources/mapper/common/DocumentMapper.xml @@ -30,4 +30,24 @@ + + diff --git a/src/main/resources/mapper/common/DocumentMaterialMapper.xml b/src/main/resources/mapper/common/DocumentMaterialMapper.xml index a19c63c..c602d4c 100644 --- a/src/main/resources/mapper/common/DocumentMaterialMapper.xml +++ b/src/main/resources/mapper/common/DocumentMaterialMapper.xml @@ -24,4 +24,21 @@ + +