手动增加仓库调拨明细过滤查询
This commit is contained in:
@@ -64,6 +64,7 @@ public class SystemAuthFactory {
|
|||||||
switch (p.getPermissionType()) {
|
switch (p.getPermissionType()) {
|
||||||
case TOP_PAGE_BUTTON -> saveInButtonAuthList(menuConfig.getMeta().getButtonAuth(), buttonProp);
|
case TOP_PAGE_BUTTON -> saveInButtonAuthList(menuConfig.getMeta().getButtonAuth(), buttonProp);
|
||||||
case TABLE_OPERATOR_BUTTON -> saveInButtonAuthList(menuConfig.getMeta().getToolButtonAuth(), 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);
|
case DIALOG_BUTTON -> saveInButtonAuthList(menuConfig.getMeta().getDialogButtonAuth(), buttonProp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,6 +137,11 @@ public class RouterConfigRawMeta {
|
|||||||
*/
|
*/
|
||||||
private List<ButtonProp> toolButtonAuth = new ArrayList<>();
|
private List<ButtonProp> toolButtonAuth = new ArrayList<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private List<ButtonProp> statusButtonAuth = new ArrayList<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dialog Button 权限
|
* Dialog Button 权限
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
package com.niuan.erp.module.common.mapper;
|
package com.niuan.erp.module.common.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
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.entity.Document;
|
||||||
|
import com.niuan.erp.module.common.enums.DocumentType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -13,4 +16,9 @@ import com.niuan.erp.module.common.entity.Document;
|
|||||||
*/
|
*/
|
||||||
public interface DocumentMapper extends BaseMapper<Document> {
|
public interface DocumentMapper extends BaseMapper<Document> {
|
||||||
|
|
||||||
|
IPage<Document> selectPageByPartNumber(Page<?> page,
|
||||||
|
String searchCode,
|
||||||
|
String partNumber,
|
||||||
|
DocumentType documentType);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ package com.niuan.erp.module.common.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.niuan.erp.module.common.entity.DocumentMaterial;
|
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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -13,4 +18,6 @@ import com.niuan.erp.module.common.entity.DocumentMaterial;
|
|||||||
*/
|
*/
|
||||||
public interface DocumentMaterialMapper extends BaseMapper<DocumentMaterial> {
|
public interface DocumentMaterialMapper extends BaseMapper<DocumentMaterial> {
|
||||||
|
|
||||||
|
List<DocumentMaterialWithInfo> selectByPartNumber(List<Long> documentIds, String partNumber);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.niuan.erp.module.warehouse.controller;
|
package com.niuan.erp.module.warehouse.controller;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.niuan.erp.common.annotation.ApiLog;
|
import com.niuan.erp.common.annotation.ApiLog;
|
||||||
import com.niuan.erp.common.annotation.ModuleLog;
|
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.BaseResult;
|
||||||
import com.niuan.erp.common.base.CommonValidateGroup.*;
|
import com.niuan.erp.common.base.CommonValidateGroup.*;
|
||||||
import com.niuan.erp.common.base.OperationType;
|
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.StockTransferOrderDto;
|
||||||
import com.niuan.erp.module.warehouse.controller.dto.StockTransferOrderItemDto;
|
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 com.niuan.erp.module.warehouse.service.StockTransferOrderService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -39,24 +36,8 @@ public class StockTransferOrderController {
|
|||||||
@GetMapping("/getStockTransferOrderPage")
|
@GetMapping("/getStockTransferOrderPage")
|
||||||
@PreAuthorize("hasAuthority('stock_transfer_order:index')")
|
@PreAuthorize("hasAuthority('stock_transfer_order:index')")
|
||||||
public BaseResult<IPage<StockTransferOrderDto>> getStockTransferOrderPage(@Validated BasePageReqParams pageParams,
|
public BaseResult<IPage<StockTransferOrderDto>> getStockTransferOrderPage(@Validated BasePageReqParams pageParams,
|
||||||
@Validated(Get.class) StockTransferOrderDto searchParams) {
|
StockTransferOrderSearchParams searchParams) {
|
||||||
var wrapper = new LambdaQueryWrapper<Document>();
|
return BaseResult.successWithData(stockTransferOrderService.getStockTransferOrderPage(pageParams, searchParams));
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiLog(type = OperationType.UPDATE, remark = "更新一条StockTransferOrder记录")
|
@ApiLog(type = OperationType.UPDATE, remark = "更新一条StockTransferOrder记录")
|
||||||
@@ -98,27 +79,22 @@ public class StockTransferOrderController {
|
|||||||
|
|
||||||
@ApiLog(type = OperationType.UPDATE, remark = "反审核StockTransferOrder")
|
@ApiLog(type = OperationType.UPDATE, remark = "反审核StockTransferOrder")
|
||||||
@Operation(summary = "反审核StockTransferOrder", operationId = "unapproveStockTransferOrder")
|
@Operation(summary = "反审核StockTransferOrder", operationId = "unapproveStockTransferOrder")
|
||||||
@PostMapping("/unapproveStockTransferOrder")
|
@PostMapping("/rejectStockTransferOrder")
|
||||||
@PreAuthorize("hasAuthority('stock_transfer_order:unapprove')")
|
@PreAuthorize("hasAuthority('stock_transfer_order:reject')")
|
||||||
public BaseResult<?> unapproveStockTransferOrder(
|
public BaseResult<?> rejectStockTransferOrder(
|
||||||
@Parameter(description = "调拨单ID") @RequestParam Long id) {
|
@Parameter(description = "调拨单ID") @RequestParam Long id) {
|
||||||
stockTransferOrderService.unapprove(id);
|
stockTransferOrderService.reject(id);
|
||||||
return BaseResult.success();
|
return BaseResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "获取StockTransferOrder明细", operationId = "getStockTransferOrderDetail")
|
@Operation(summary = "获取StockTransferOrder明细", operationId = "getStockTransferOrderDetail")
|
||||||
@GetMapping("/getStockTransferOrderDetail")
|
@GetMapping("/getStockTransferOrderItem")
|
||||||
@PreAuthorize("hasAuthority('stocktransferorder:index')")
|
@PreAuthorize("hasAuthority('stock_transfer_order:index')")
|
||||||
public BaseResult<List<StockTransferOrderItemDto>> getStockTransferOrderDetail(
|
public BaseResult<List<StockTransferOrderItemDto>> getStockTransferOrderItem(
|
||||||
@Parameter(description = "调拨单ID") @RequestParam Long id) {
|
@Parameter(description = "调拨单ID")
|
||||||
return BaseResult.successWithData(stockTransferOrderService.getDetail(id));
|
@RequestParam
|
||||||
}
|
@NotNull(message = "warehouse.stock_transfer_order.validate.order_id.not_null")
|
||||||
|
Long orderId) {
|
||||||
@Operation(summary = "导入StockTransferOrder明细", operationId = "importStockTransferOrderItems")
|
return BaseResult.successWithData(stockTransferOrderService.getItem(orderId));
|
||||||
@PostMapping("/importStockTransferOrderItems")
|
|
||||||
@PreAuthorize("hasAuthority('stock_transfer_order:add')")
|
|
||||||
public BaseResult<List<StockTransferOrderItemDto>> importStockTransferOrderItems(
|
|
||||||
@Parameter(description = "Excel文件") @RequestParam("file") MultipartFile file) {
|
|
||||||
return BaseResult.successWithData(stockTransferOrderService.importItems(file));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +1,20 @@
|
|||||||
package com.niuan.erp.module.warehouse.controller.dto;
|
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(
|
public record StockTransferOrderDto(
|
||||||
Long id,
|
Long id,
|
||||||
Integer status,
|
|
||||||
LocalDateTime createDate,
|
LocalDateTime createDate,
|
||||||
Long createUserId,
|
|
||||||
String createUserName,
|
|
||||||
LocalDateTime updateDate,
|
|
||||||
Long updateUserId,
|
|
||||||
String updateUserName,
|
|
||||||
Integer storeNo,
|
Integer storeNo,
|
||||||
String storeName,
|
String storeName,
|
||||||
Integer formType,
|
|
||||||
String formCode,
|
|
||||||
String formName,
|
|
||||||
Integer formStatus,
|
|
||||||
String formMark,
|
|
||||||
Integer reserve1,
|
|
||||||
String reserve2,
|
|
||||||
Integer vendorNo,
|
|
||||||
String vendorName,
|
|
||||||
Double totalValue,
|
|
||||||
Integer outStoreNo,
|
Integer outStoreNo,
|
||||||
String outStoreName,
|
String outStoreName,
|
||||||
Integer groupId,
|
String formCode,
|
||||||
Integer customerId,
|
String formName,
|
||||||
String searchCode) {}
|
String formMark,
|
||||||
|
Integer formStatus,
|
||||||
|
List<StockTransferOrderItemDto> orderItems) {}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.niuan.erp.module.warehouse.controller.dto;
|
||||||
|
|
||||||
|
public record StockTransferOrderSearchParams(
|
||||||
|
String searchCode,
|
||||||
|
String partNumber
|
||||||
|
) {}
|
||||||
@@ -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.Document;
|
||||||
import com.niuan.erp.module.common.entity.DocumentMaterial;
|
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.StockTransferOrderAddDto;
|
||||||
import com.niuan.erp.module.warehouse.controller.dto.StockTransferOrderDto;
|
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.StockTransferOrderItemAddDto;
|
||||||
@@ -17,12 +18,10 @@ public interface StockTransferOrderConverter {
|
|||||||
Document toEntity(StockTransferOrderDto dto);
|
Document toEntity(StockTransferOrderDto dto);
|
||||||
Document toEntity(StockTransferOrderAddDto dto);
|
Document toEntity(StockTransferOrderAddDto dto);
|
||||||
StockTransferOrderDto toDto(Document entity);
|
StockTransferOrderDto toDto(Document entity);
|
||||||
List<StockTransferOrderDto> toDtoList(List<Document> entities);
|
|
||||||
|
|
||||||
DocumentMaterial toEntity(StockTransferOrderItemAddDto dto);
|
DocumentMaterial toEntity(StockTransferOrderItemAddDto dto);
|
||||||
List<DocumentMaterial> toEntityList(List<StockTransferOrderItemAddDto> dtoList);
|
List<DocumentMaterial> toEntityList(List<StockTransferOrderItemAddDto> dtoList);
|
||||||
|
|
||||||
@Mapping(target = "productSpec", ignore = true)
|
StockTransferOrderItemDto toItemDto(DocumentMaterialWithInfo entity);
|
||||||
StockTransferOrderItemDto toItemDto(DocumentMaterial entity);
|
|
||||||
List<StockTransferOrderItemDto> toItemDtoList(List<DocumentMaterial> entities);
|
List<StockTransferOrderItemDto> toItemDtoList(List<DocumentMaterial> entities);
|
||||||
}
|
}
|
||||||
@@ -1,19 +1,20 @@
|
|||||||
package com.niuan.erp.module.warehouse.service;
|
package com.niuan.erp.module.warehouse.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.niuan.erp.common.base.BasePageReqParams;
|
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.StockTransferOrderAddDto;
|
||||||
import com.niuan.erp.module.warehouse.controller.dto.StockTransferOrderDto;
|
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.StockTransferOrderItemDto;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import com.niuan.erp.module.warehouse.controller.dto.StockTransferOrderSearchParams;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface StockTransferOrderService {
|
public interface StockTransferOrderService {
|
||||||
|
|
||||||
IPage<StockTransferOrderDto> getStockTransferOrderPage(BasePageReqParams pageParams, LambdaQueryWrapper<Document> wrapper);
|
IPage<StockTransferOrderDto> getStockTransferOrderPage(BasePageReqParams pageParams,
|
||||||
|
StockTransferOrderSearchParams searchParams);
|
||||||
|
|
||||||
|
List<StockTransferOrderItemDto> getItem(long id);
|
||||||
|
|
||||||
void addStockTransferOrder(StockTransferOrderAddDto dto);
|
void addStockTransferOrder(StockTransferOrderAddDto dto);
|
||||||
|
|
||||||
@@ -25,9 +26,6 @@ public interface StockTransferOrderService {
|
|||||||
|
|
||||||
void approve(long id);
|
void approve(long id);
|
||||||
|
|
||||||
void unapprove(long id);
|
void reject(long id);
|
||||||
|
|
||||||
List<StockTransferOrderItemDto> getDetail(long id);
|
|
||||||
|
|
||||||
List<StockTransferOrderItemDto> importItems(MultipartFile file);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.enums.FormStatus;
|
||||||
import com.niuan.erp.module.common.mapper.DocumentMapper;
|
import com.niuan.erp.module.common.mapper.DocumentMapper;
|
||||||
import com.niuan.erp.module.common.mapper.DocumentMaterialMapper;
|
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.*;
|
||||||
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.converter.StockTransferOrderConverter;
|
import com.niuan.erp.module.warehouse.converter.StockTransferOrderConverter;
|
||||||
import com.niuan.erp.module.warehouse.entity.Stock;
|
import com.niuan.erp.module.warehouse.entity.Stock;
|
||||||
import com.niuan.erp.module.warehouse.entity.WarehouseItem;
|
import com.niuan.erp.module.warehouse.entity.WarehouseItem;
|
||||||
@@ -52,8 +49,41 @@ public class StockTransferOrderServiceImpl extends ServiceImpl<DocumentMapper, D
|
|||||||
private final StockMapper stockMapper;
|
private final StockMapper stockMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<StockTransferOrderDto> getStockTransferOrderPage(BasePageReqParams pageParams, LambdaQueryWrapper<Document> wrapper) {
|
public IPage<StockTransferOrderDto> getStockTransferOrderPage(BasePageReqParams pageParams,
|
||||||
wrapper.eq(Document::getFormType, DocumentType.STOCK_TRANSFER_ORDER);
|
StockTransferOrderSearchParams searchParams) {
|
||||||
|
var wrapper = new LambdaQueryWrapper<Document>()
|
||||||
|
.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<Document> result = this.baseMapper.selectPage(new Page<>(pageParams.page(), pageParams.pageSize()), wrapper);
|
IPage<Document> result = this.baseMapper.selectPage(new Page<>(pageParams.page(), pageParams.pageSize()), wrapper);
|
||||||
return result.convert(stockTransferOrderConverter::toDto);
|
return result.convert(stockTransferOrderConverter::toDto);
|
||||||
}
|
}
|
||||||
@@ -246,7 +276,7 @@ public class StockTransferOrderServiceImpl extends ServiceImpl<DocumentMapper, D
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void unapprove(long id) {
|
public void reject(long id) {
|
||||||
Document entity = this.baseMapper.selectById(id);
|
Document entity = this.baseMapper.selectById(id);
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
throw new BusinessException("warehouse.stock_transfer_order.exception.not_found");
|
throw new BusinessException("warehouse.stock_transfer_order.exception.not_found");
|
||||||
@@ -330,53 +360,9 @@ public class StockTransferOrderServiceImpl extends ServiceImpl<DocumentMapper, D
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<StockTransferOrderItemDto> getDetail(long id) {
|
public List<StockTransferOrderItemDto> getItem(long id) {
|
||||||
LambdaQueryWrapper<DocumentMaterial> wrapper = new LambdaQueryWrapper<>();
|
var items = documentMaterialMapper.selectByPartNumber(List.of(id), null);
|
||||||
wrapper.eq(DocumentMaterial::getDocumentNo, id);
|
return items.stream().map(stockTransferOrderConverter::toItemDto).toList();
|
||||||
List<DocumentMaterial> materials = documentMaterialMapper.selectList(wrapper);
|
|
||||||
return stockTransferOrderConverter.toItemDtoList(materials);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<StockTransferOrderItemDto> 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<StockTransferOrderItemDto> 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");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateTransferOrder(StockTransferOrderAddDto dto) {
|
private void validateTransferOrder(StockTransferOrderAddDto dto) {
|
||||||
@@ -408,16 +394,4 @@ public class StockTransferOrderServiceImpl extends ServiceImpl<DocumentMapper, D
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getCellValueAsString(Cell cell) {
|
|
||||||
if (cell == null) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
return switch (cell.getCellType()) {
|
|
||||||
case STRING -> cell.getStringCellValue().trim();
|
|
||||||
case NUMERIC -> String.valueOf((long) cell.getNumericCellValue());
|
|
||||||
case BOOLEAN -> String.valueOf(cell.getBooleanCellValue());
|
|
||||||
default -> "";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -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.not_null=调拨数量不能为空
|
||||||
warehouse.stock_transfer_order.validate.product_count.min=调拨数量不能小于 1
|
warehouse.stock_transfer_order.validate.product_count.min=调拨数量不能小于 1
|
||||||
warehouse.stock_transfer_order.validate.part_id.not_null=物料 ID 不能为空
|
warehouse.stock_transfer_order.validate.part_id.not_null=物料 ID 不能为空
|
||||||
|
warehouse.stock_transfer_order.validate.order_id.not_null=调拨单 ID 不能为空
|
||||||
|
|
||||||
|
|
||||||
# ==========>> 生产管理
|
# ==========>> 生产管理
|
||||||
|
|||||||
@@ -30,4 +30,24 @@
|
|||||||
<result column="CustomerId" property="customerId" />
|
<result column="CustomerId" property="customerId" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="selectPageByPartNumber" resultType="Document">
|
||||||
|
SELECT DISTINCT f.*
|
||||||
|
FROM productionform f
|
||||||
|
LEFT JOIN materialinout m ON m.DocumentNo = f.Id
|
||||||
|
<where>
|
||||||
|
<if test="searchCode != null and searchCode != ''">
|
||||||
|
AND (f.FormCode LIKE CONCAT('%', #{searchCode}, '%')
|
||||||
|
OR f.FormMark LIKE CONCAT('%', #{searchCode}, '%')
|
||||||
|
OR f.FormName LIKE CONCAT('%', #{searchCode}, '%'))
|
||||||
|
</if>
|
||||||
|
<if test="partNumber != null and partNumber != ''">
|
||||||
|
AND m.PartNumber LIKE CONCAT('%', #{partNumber}, '%')
|
||||||
|
</if>
|
||||||
|
<if test="documentType != null">
|
||||||
|
AND f.FormType = #{documentType}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY f.CreateDate DESC
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -24,4 +24,21 @@
|
|||||||
<result column="PartId" property="partId" />
|
<result column="PartId" property="partId" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="selectByPartNumber" resultType="DocumentMaterialWithInfo">
|
||||||
|
SELECT m.*, p.ProductSpecs
|
||||||
|
FROM materialinout m
|
||||||
|
LEFT JOIN product p ON p.PartNumber = m.PartNumber
|
||||||
|
<where>
|
||||||
|
<if test="documentIds != null and !documentIds.isEmpty()">
|
||||||
|
AND m.DocumentNo IN
|
||||||
|
<foreach collection="documentIds" open="(" separator="," close=")" item="documentId">
|
||||||
|
#{documentId}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
<if test="partNumber != null and partNumber != ''">
|
||||||
|
AND m.PartNumber LIKE CONCAT('%', #{partNumber}, '%')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user