手动增加仓库调拨明细过滤查询
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,6 +137,11 @@ public class RouterConfigRawMeta {
|
||||
*/
|
||||
private List<ButtonProp> toolButtonAuth = new ArrayList<>();
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private List<ButtonProp> statusButtonAuth = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* 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;
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -13,4 +16,9 @@ import com.niuan.erp.module.common.entity.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.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>
|
||||
@@ -13,4 +18,6 @@ import com.niuan.erp.module.common.entity.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;
|
||||
|
||||
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<IPage<StockTransferOrderDto>> getStockTransferOrderPage(@Validated BasePageReqParams pageParams,
|
||||
@Validated(Get.class) StockTransferOrderDto searchParams) {
|
||||
var wrapper = new LambdaQueryWrapper<Document>();
|
||||
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<List<StockTransferOrderItemDto>> 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<List<StockTransferOrderItemDto>> importStockTransferOrderItems(
|
||||
@Parameter(description = "Excel文件") @RequestParam("file") MultipartFile file) {
|
||||
return BaseResult.successWithData(stockTransferOrderService.importItems(file));
|
||||
@GetMapping("/getStockTransferOrderItem")
|
||||
@PreAuthorize("hasAuthority('stock_transfer_order:index')")
|
||||
public BaseResult<List<StockTransferOrderItemDto>> getStockTransferOrderItem(
|
||||
@Parameter(description = "调拨单ID")
|
||||
@RequestParam
|
||||
@NotNull(message = "warehouse.stock_transfer_order.validate.order_id.not_null")
|
||||
Long orderId) {
|
||||
return BaseResult.successWithData(stockTransferOrderService.getItem(orderId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {}
|
||||
Long id,
|
||||
LocalDateTime createDate,
|
||||
Integer storeNo,
|
||||
String storeName,
|
||||
Integer outStoreNo,
|
||||
String outStoreName,
|
||||
String formCode,
|
||||
String formName,
|
||||
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.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<StockTransferOrderDto> toDtoList(List<Document> entities);
|
||||
|
||||
DocumentMaterial toEntity(StockTransferOrderItemAddDto dto);
|
||||
List<DocumentMaterial> toEntityList(List<StockTransferOrderItemAddDto> dtoList);
|
||||
|
||||
@Mapping(target = "productSpec", ignore = true)
|
||||
StockTransferOrderItemDto toItemDto(DocumentMaterial entity);
|
||||
StockTransferOrderItemDto toItemDto(DocumentMaterialWithInfo entity);
|
||||
List<StockTransferOrderItemDto> toItemDtoList(List<DocumentMaterial> entities);
|
||||
}
|
||||
@@ -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<StockTransferOrderDto> getStockTransferOrderPage(BasePageReqParams pageParams, LambdaQueryWrapper<Document> wrapper);
|
||||
IPage<StockTransferOrderDto> getStockTransferOrderPage(BasePageReqParams pageParams,
|
||||
StockTransferOrderSearchParams searchParams);
|
||||
|
||||
List<StockTransferOrderItemDto> 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<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.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<DocumentMapper, D
|
||||
private final StockMapper stockMapper;
|
||||
|
||||
@Override
|
||||
public IPage<StockTransferOrderDto> getStockTransferOrderPage(BasePageReqParams pageParams, LambdaQueryWrapper<Document> wrapper) {
|
||||
wrapper.eq(Document::getFormType, DocumentType.STOCK_TRANSFER_ORDER);
|
||||
public IPage<StockTransferOrderDto> getStockTransferOrderPage(BasePageReqParams pageParams,
|
||||
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);
|
||||
return result.convert(stockTransferOrderConverter::toDto);
|
||||
}
|
||||
@@ -246,7 +276,7 @@ public class StockTransferOrderServiceImpl extends ServiceImpl<DocumentMapper, D
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unapprove(long id) {
|
||||
public void reject(long id) {
|
||||
Document entity = this.baseMapper.selectById(id);
|
||||
if (entity == null) {
|
||||
throw new BusinessException("warehouse.stock_transfer_order.exception.not_found");
|
||||
@@ -330,53 +360,9 @@ public class StockTransferOrderServiceImpl extends ServiceImpl<DocumentMapper, D
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StockTransferOrderItemDto> getDetail(long id) {
|
||||
LambdaQueryWrapper<DocumentMaterial> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(DocumentMaterial::getDocumentNo, id);
|
||||
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");
|
||||
}
|
||||
public List<StockTransferOrderItemDto> 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<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.min=调拨数量不能小于 1
|
||||
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" />
|
||||
</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>
|
||||
|
||||
@@ -24,4 +24,21 @@
|
||||
<result column="PartId" property="partId" />
|
||||
</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>
|
||||
|
||||
Reference in New Issue
Block a user