oa_based/src/modules/materials_inventory/materials_inventory.dto.ts

68 lines
1.7 KiB
TypeScript
Raw Normal View History

2024-03-04 14:17:53 +08:00
import { ApiProperty, IntersectionType, PartialType } from '@nestjs/swagger';
import {
IsArray,
IsDate,
IsDateString,
2024-03-27 14:11:11 +08:00
IsEnum,
2024-03-04 14:17:53 +08:00
IsIn,
IsInt,
IsNumber,
IsOptional,
IsString,
Matches,
MinLength
} from 'class-validator';
import { PagerDto } from '~/common/dto/pager.dto';
import { Storage } from '../tools/storage/storage.entity';
2024-03-07 14:12:01 +08:00
import { Transform } from 'class-transformer';
import dayjs from 'dayjs';
import { formatToDate } from '~/utils';
2024-03-27 14:11:11 +08:00
import { HasInventoryStatusEnum } from '~/constants/enum';
2024-03-04 14:17:53 +08:00
2024-03-04 17:31:28 +08:00
export class MaterialsInventoryDto {}
2024-03-04 14:17:53 +08:00
2024-03-04 17:31:28 +08:00
export class MaterialsInventoryUpdateDto extends PartialType(MaterialsInventoryDto) {}
2024-03-04 14:17:53 +08:00
export class MaterialsInventoryQueryDto extends IntersectionType(
PagerDto<MaterialsInventoryDto>,
PartialType(MaterialsInventoryDto)
2024-03-27 14:11:11 +08:00
) {
@ApiProperty({ description: '产品名' })
@IsOptional()
@IsString()
product: string;
@ApiProperty({ description: '关键字' })
@IsOptional()
@IsString()
keyword: string;
@ApiProperty({ description: '产品名' })
@IsOptional()
@IsEnum(HasInventoryStatusEnum)
isHasInventory: HasInventoryStatusEnum;
2024-03-29 14:41:54 +08:00
@ApiProperty({ description: '项目Id' })
@IsOptional()
@IsNumber()
projectId: number;
2024-03-27 14:11:11 +08:00
}
2024-03-07 14:12:01 +08:00
export class MaterialsInventoryExportDto {
@ApiProperty({ description: '项目' })
@IsOptional()
@IsNumber()
projectId: number;
2024-03-07 16:28:03 +08:00
2024-03-07 14:12:01 +08:00
@ApiProperty({ description: '导出时间YYYY-MM-DD' })
@IsOptional()
2024-03-07 16:28:03 +08:00
@IsArray()
2024-03-07 14:12:01 +08:00
@Transform(params => {
// 开始和结束时间用的是一月的开始和一月的结束的时分秒
const date = params.value;
return [
date ? `${formatToDate(dayjs(date).startOf('month'))} 00:00:00` : null,
date ? `${formatToDate(dayjs(date).endOf('month'))} 23:59:59` : null
];
})
time?: string[];
}