import { Injectable } from '@angular/core';
import josnData from './api-data'
import * as XLSX from 'xlsx'
import { saveAs } from 'file-saver';
@Injectable({
providedIn: 'root'
})
export class JsonToExcelService {
constructor() { }
pwa = [
{ url: '/api/cc/plan/{planid}/result', type: 'put' },
{ url: '/api/cc/plan', type: 'get' },
{ url: '/api/cc/plan/{planid}/examinee', type: 'get' },
{ url: '/api/cc/table/{tableid}/item', type: 'get' },
{ url: '/api/cc/examiner/self/state', type: 'post' },
{ url: '/api/cc/plan/examinee/photo', type: 'post' },
{ url: '/api/cc/plan/{planid}/{group}/passrate', type: 'get' },
]
wc = [
{ url: '/api/cc/system/afterinterview/login', type: 'post' },
{ url: '/api/cc/system/login', type: 'post' },
{ url: '/api/cc/candidate', type: 'get' },
{ url: '/api/cc/plan', type: 'get' },
{ url: '/api/cc/plan/team/state/{teamid}', type: 'put' },
{ url: '/api/cc/candidate/{idcard}', type: 'get' },
{ url: '/api/cc/plan/{planid}/examinee/grouping', type: 'delete' },
{ url: '/api/cc/v2/face/candidate', type: 'get' },
{ url: '/api/cc/v2/face/candidate/idcard', type: 'post' },
{ url: '/api/cc/v2/face/outSideSubmit', type: 'put' },
]
// 新招聘与其他平台公用的
newJob = [
{ url: '/api/cc/system/login', type: 'post' },
]
getJosn() {
const apiData = josnData
let paths = apiData.paths
let exportData: { system: string, url: string, type: string }[] = []
let urlArray = Object.keys(paths)
for (let i = 0; i < urlArray.length; i++) {
const url = urlArray[i];
// 查找微信,/candidate/ 开头的
if (url.substr(0, 11) === '/candidate/') {
Object.keys(paths[url]).forEach(type => {
exportData.push({
system: 'jobcc_wx',
url,
type
})
})
}
// 查找pwa
let pwa = this.pwa.find(p => p.url === url)
if (pwa) {
Object.keys(paths[url]).forEach(type => {
if (pwa.type === type) {
exportData.push({
system: 'jobcc_pwa',
url,
type
})
}
})
}
// 查找外场
let wc = this.wc.find(w => w.url === url)
if (wc) {
Object.keys(paths[url]).forEach(type => {
if (wc.type === type) {
exportData.push({
system: 'jobcc_electron',
url,
type
})
}
})
// 有可能多个系统共用一个接口,所以这里才跳出
continue;
}
if (url.indexOf('login') !== -1) {
continue;
}
// 查找老招聘,job是指老招聘 新招聘的api都是/api/cc/ 开头 排除/api/cc/和/candidate/的剩下就是老招聘
if (url.substr(0, 8) !== '/api/cc/') {
Object.keys(paths[url]).forEach(type => {
exportData.push({
system: 'job',
url,
type
})
})
continue;
}
}
this.JSONToExcelConvertor(exportData, 'swagger-api')
}
//json数据转excel
JSONToExcelConvertor(JSONData: any, FileName: string) {
let book = XLSX.utils.book_new();
let sheet = XLSX.utils.json_to_sheet(JSONData)
XLSX.utils.book_append_sheet(book, sheet, '接口')
sheet.A1.v = '系统名'
sheet.C1.v = 'http-method'
let excelData = XLSX.write(book, { bookType: "xlsx", bookSST: false, type: "binary" });
var blob = new Blob([this.string2ArrayBuffer(excelData)], { type: "" });
saveAs(blob, `${FileName}.xlsx`);
}
string2ArrayBuffer(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
}