wupengfei
2025-04-30 b3fda48ba53b36f6770f399f58290ed4d95d04a6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import { convertApi2FormUrl, convertApi2FormUrlOnlyOne } from '@/utils';
import {
  ApplyTransferFileBusinessTypeEnum,
  ApplyTransferFileBusinessTypeEnumKey,
  ApplyTransferMaterialFileTableItem,
  FourStreamsMaterialFileBusinessTypeEnum,
  FourStreamsMaterialFileBusinessTypeEnumKey,
  FourStreamsMaterialFileTableItem,
  TransferFileEnumInRewardGrand,
  TransferFileEnumInRewardGrandKey,
  TransferFileEnumInRewardGrandTableItem,
} from '../types';
 
export class FourStreamsMaterialUtils {
  /**实体产业园材料 */
  static PhysicalIndustrialParkMaterialFile = [
    FourStreamsMaterialFileBusinessTypeEnum.ParkEnterPactUrl,
    FourStreamsMaterialFileBusinessTypeEnum.RatePaymentFileUrl,
    FourStreamsMaterialFileBusinessTypeEnum.TaxSubFileUrl,
    FourStreamsMaterialFileBusinessTypeEnum.OperateProfitesUrl,
  ];
 
  /**数字经济园材料 */
  static DigitIndustrialParkMaterialFile = [
    FourStreamsMaterialFileBusinessTypeEnum.ParkEnterPactUrl,
    // FourStreamsMaterialFileBusinessTypeEnum.EnterRelateUrl,
    FourStreamsMaterialFileBusinessTypeEnum.RatePaymentFileUrl,
    FourStreamsMaterialFileBusinessTypeEnum.TaxSubFileUrl,
    FourStreamsMaterialFileBusinessTypeEnum.OperateProfitesUrl,
    FourStreamsMaterialFileBusinessTypeEnum.PersonTaxRatePayUrl,
    FourStreamsMaterialFileBusinessTypeEnum.PersonTaxInstructUrl,
  ];
 
  /**财政拨付和平台充值凭证 */
  static ApplyTransferMaterialFile = [
    ApplyTransferFileBusinessTypeEnum.FinanceToFileUrl,
    ApplyTransferFileBusinessTypeEnum.TransferToFileUrl,
  ];
 
  /**财政拨付和平台充值凭证  奖励金发放*/
  static TransferFileEnumInRewardGrandFile = [
    TransferFileEnumInRewardGrand.FinanceFileUrl,
    TransferFileEnumInRewardGrand.SettleFileUrl,
  ];
 
  static isFourStreamsParkType(parkTypeName) {
    return (
      ParkTypeUtils.isPhysicalIndustrialPark(parkTypeName) ||
      ParkTypeUtils.isDigitIndustrialPark(parkTypeName)
    );
  }
 
  static initFourStreamsMaterialFileList(
    data: API.ParkBountyApplyDetailInfo,
    parkTypeName: string
  ) {
    if (!this.isFourStreamsParkType(parkTypeName)) return [];
    const list = ParkTypeUtils.isPhysicalIndustrialPark(parkTypeName)
      ? this.PhysicalIndustrialParkMaterialFile
      : this.DigitIndustrialParkMaterialFile;
    return list.map((item) => {
      return {
        fileBusinessType: item,
        fileList: convertApi2FormUrlOnlyOne(data[FourStreamsMaterialFileBusinessTypeEnumKey[item]]),
      } as FourStreamsMaterialFileTableItem;
    });
  }
 
  static fourStreamsMaterialFileList2Api(list: FourStreamsMaterialFileTableItem[]) {
    return Object.fromEntries(
      list.map((item) => [
        FourStreamsMaterialFileBusinessTypeEnumKey[item.fileBusinessType],
        item.fileList[0]?.path ?? '',
      ])
    );
  }
 
  static initApplyTransferMaterialFileList<
    T extends { financeToFileUrl?: string; transferToFileUrl?: string }
  >(data: T) {
    return this.ApplyTransferMaterialFile.map((item) => {
      const filePathList = data[ApplyTransferFileBusinessTypeEnumKey[item]]
        ? data[ApplyTransferFileBusinessTypeEnumKey[item]].split('|')
        : [];
      return {
        fileBusinessType: item,
        fileList: filePathList.map(convertApi2FormUrl),
      } as ApplyTransferMaterialFileTableItem;
    });
  }
 
  static initApplyRewardGrandFileList<
    T extends { financeFileUrl?: string; settleFileUrl?: string }
  >(data: T) {
    return this.TransferFileEnumInRewardGrandFile.map((item) => {
      const filePathList = data[TransferFileEnumInRewardGrandKey[item]]
        ? data[TransferFileEnumInRewardGrandKey[item]].split('|')
        : [];
      return {
        fileBusinessType: item,
        fileList: filePathList.map(convertApi2FormUrl),
      } as TransferFileEnumInRewardGrandTableItem;
    });
  }
}
 
export class ParkTypeUtils {
  static isPhysicalIndustrialPark(parkTypeName: string) {
    return parkTypeName === '实体产业园';
  }
  static isDigitIndustrialPark(parkTypeName: string) {
    return parkTypeName === '数字经济园';
  }
}