zhengyiming
3 天以前 89f387786da0e4383cf06ee162526db54971f9cf
src/components/commonView/utils/index.ts
@@ -1,15 +1,21 @@
import { convertApi2FormUrl, convertApi2FormUrlOnlyOne } from '@/utils';
import {
  ApplyTransferFileBusinessTypeEnum,
  ApplyTransferFileBusinessTypeEnumKey,
  ApplyTransferMaterialFileTableItem,
  FourStreamsMaterialFileBusinessTypeEnum,
  FourStreamsMaterialFileBusinessTypeEnumKey,
  FourStreamsMaterialFileTableItem,
  TransferFileEnumInRewardGrand,
  TransferFileEnumInRewardGrandKey,
  TransferFileEnumInRewardGrandTableItem,
} from '../types';
import { UploadUserFile } from '@bole-core/components';
import _ from 'lodash';
import {
  ApplyTransferFileBusinessTypeEnum,
  ApplyTransferFileBusinessTypeEnumKey,
  FourStreamsMaterialFileBusinessTypeEnum,
  FourStreamsMaterialFileBusinessTypeEnumKey,
  TransferFileEnumInRewardGrand,
  TransferFileEnumInRewardGrandKey,
  FourStreamsExtraMaterialFileSearchType,
  SearchType,
} from '@/constants';
export class FourStreamsMaterialUtils {
  /**实体产业园材料 */
@@ -112,3 +118,161 @@
    return parkTypeName === '数字经济园';
  }
}
export type CustomerApplyFileTypeListItem = {
  id?: string;
  fileSearchTypeId?: string;
  searchType?: number;
  fileTypeName?: string;
  lastUpdateTime?: string;
  listFiles?: (API.CustomerUploadMonthApplyFileTypeDto & UploadUserFile)[];
};
export class EnterpriseApplyFileUtils {
  static convertApiFileToParkCollectFileList(listFiles: API.CustomerUploadMonthApplyFileTypeDto[]) {
    const group = _.groupBy(listFiles, 'fileSearchTypeId');
    return Object.keys(group).map(
      (x) =>
        ({
          fileSearchTypeId: x,
          fileTypeName: group[x][0].fileSearchTypeName,
          listFiles: group[x]
            .filter((x) => !!x.fileUrl)
            .map((a) => ({
              ...a,
              ...convertApi2FormUrl(a.fileUrl),
            })),
        } as CustomerApplyFileTypeListItem)
    );
  }
  static initParkCollectFileList(parkCollectFileTypeList: API.GetCustomerUploadApplyFilesOutput[]) {
    return parkCollectFileTypeList.map(
      (x) =>
        ({
          fileSearchTypeId: x.fileSearchTypeId,
          fileTypeName: x.fileTypeName,
          listFiles: [],
        } as CustomerApplyFileTypeListItem)
    );
  }
  static convertApiFileToExtraListFiles(listFiles: API.CustomerUploadMonthApplyFileTypeDto[]) {
    if (listFiles.length > 0) {
      return this.convertApiFileToParkCollectFileList(listFiles);
    } else {
      return [
        {
          fileSearchTypeId: FourStreamsExtraMaterialFileSearchType[SearchType.BountyExtraFileType],
          fileTypeName: '补充材料',
          listFiles: [],
        } as CustomerApplyFileTypeListItem,
      ];
    }
  }
  static initParkCollectFileListApplyFiles(
    applyUploadFiles: API.GetEnterpriseParkApplyUploadFileOutput[],
    applyFiles: API.GetCustomerUploadApplyFilesOutput[],
    lastUploadEnterPactFile: API.CustomerUploadMonthApplyFileTypeDto[],
    applyUploadExtraFiles: API.GetEnterpriseParkApplyUploadFileOutput[]
  ) {
    const extraFiles =
      applyUploadExtraFiles.length > 0
        ? applyUploadExtraFiles.map((x) => {
            return {
              fileSearchTypeId: x.fileSearchTypeId,
              fileTypeName: x.fileSearchTypeName,
              listFiles: x.listFiles.map((a) => ({ ...a, ...convertApi2FormUrl(a.fileUrl) })),
            } as CustomerApplyFileTypeListItem;
          })
        : [
            {
              fileSearchTypeId:
                FourStreamsExtraMaterialFileSearchType[SearchType.BountyApplyExtraFileType],
              fileTypeName: '补充材料',
              listFiles: [],
            } as CustomerApplyFileTypeListItem,
          ];
    return applyUploadFiles
      .map((x) => {
        const applyFile = applyFiles.find((a) => a.fileSearchTypeId === x.fileSearchTypeId);
        let listFiles: API.CustomerUploadMonthApplyFileTypeDto[];
        if (x.fileSearchTypeName === '园区入驻协议') {
          listFiles = !x.listFiles.length ? lastUploadEnterPactFile : x.listFiles;
        } else {
          listFiles =
            !x.listFiles.length && applyFile?.listFiles?.length > 0
              ? applyFile.listFiles
              : x.listFiles;
        }
        return {
          fileSearchTypeId: x.fileSearchTypeId,
          fileTypeName: x.fileSearchTypeName,
          listFiles: listFiles.map((a) => ({ ...a, ...convertApi2FormUrl(a.fileUrl) })),
        } as CustomerApplyFileTypeListItem;
      })
      .concat(extraFiles);
  }
  static isApplyUploadExtraFileSearchTypeId(fileSearchTypeId: string) {
    return (
      (fileSearchTypeId ?? '').toLowerCase() ===
      FourStreamsExtraMaterialFileSearchType[SearchType.BountyApplyExtraFileType].toLowerCase()
    );
  }
  static convertFileTableListToApi(fileTableList: CustomerApplyFileTypeListItem[]) {
    return fileTableList.map(
      (x) =>
        ({
          fileSearchTypeId: x.fileSearchTypeId,
          listFiles: x.listFiles.map((a) => ({
            fileSearchTypeId: x.fileSearchTypeId,
            fileSearchTypeName: x.fileTypeName,
            fileSize: a.fileSize || a.size,
            fileUrl: a.path,
          })),
        } as API.CustomerUploadMonthApplyFileType)
    );
  }
  static convertFileTableListToApplyCompanyFile(fileTableList: CustomerApplyFileTypeListItem[]) {
    return fileTableList.map(
      (x) =>
        ({
          fileSearchTypeId: x.fileSearchTypeId,
          fileSearchTypeName: x.fileTypeName,
          listFiles: x.listFiles.map((a) => ({
            fileSearchTypeId: x.fileSearchTypeId,
            fileSearchTypeName: x.fileTypeName,
            fileSize: a.fileSize || a.size,
            fileUrl: a.path,
          })),
        } as API.UploadParkApplyCustomerFileTypes)
    );
  }
  static convertFileTableListToApiBatch(fileTableList: CustomerApplyFileTypeListItem[]) {
    const applyFileTypeList = this.convertFileTableListToApi(fileTableList);
    return _.flatMap(applyFileTypeList, (x) => x.listFiles);
  }
  static isFileTableListAllUploaded(fileTableList: CustomerApplyFileTypeListItem[]) {
    return fileTableList.every((fileTableListItem) => {
      return fileTableListItem.listFiles.every((fileItem) => {
        return fileItem.status === 'success';
      });
    });
  }
  static isFileTableListExist(fileTableList: CustomerApplyFileTypeListItem[]) {
    return fileTableList.some((fileTableListItem) => {
      return fileTableListItem.listFiles.some((fileItem) => {
        return fileItem.status === 'success';
      });
    });
  }
}