Commit e3b2bb56 by lixinming

版本4封版

parent b271f11c
......@@ -158,6 +158,49 @@
"uri-js": "^4.2.2"
}
},
"archiver": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-5.2.0.tgz",
"integrity": "sha512-QEAKlgQuAtUxKeZB9w5/ggKXh21bZS+dzzuQ0RPBC20qtDCbTyzqmisoeJP46MP39fg4B4IcyvR+yeyEBdblsQ==",
"requires": {
"archiver-utils": "^2.1.0",
"async": "^3.2.0",
"buffer-crc32": "^0.2.1",
"readable-stream": "^3.6.0",
"readdir-glob": "^1.0.0",
"tar-stream": "^2.1.4",
"zip-stream": "^4.0.4"
},
"dependencies": {
"readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
}
}
},
"archiver-utils": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
"integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
"requires": {
"glob": "^7.1.4",
"graceful-fs": "^4.2.0",
"lazystream": "^1.0.0",
"lodash.defaults": "^4.2.0",
"lodash.difference": "^4.5.0",
"lodash.flatten": "^4.4.0",
"lodash.isplainobject": "^4.0.6",
"lodash.union": "^4.6.0",
"normalize-path": "^3.0.0",
"readable-stream": "^2.0.0"
}
},
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
......@@ -176,6 +219,11 @@
"resolved": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
"async": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
},
"async-limiter": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz",
......@@ -205,6 +253,16 @@
"regenerator-runtime": "^0.11.0"
}
},
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
......@@ -261,11 +319,34 @@
}
}
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"bson": {
"version": "1.1.6",
"resolved": "https://registry.npm.taobao.org/bson/download/bson-1.1.6.tgz",
"integrity": "sha1-+4Gb6aYM1nfghTruTKcSp4XWYYo="
},
"buffer": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"requires": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
}
},
"buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
......@@ -334,6 +415,29 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
"integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
},
"compress-commons": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz",
"integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==",
"requires": {
"buffer-crc32": "^0.2.13",
"crc32-stream": "^4.0.2",
"normalize-path": "^3.0.0",
"readable-stream": "^3.6.0"
},
"dependencies": {
"readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
}
}
},
"compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
......@@ -356,6 +460,11 @@
"vary": "~1.1.2"
}
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"content-disposition": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
......@@ -398,6 +507,27 @@
"printj": "~1.1.0"
}
},
"crc32-stream": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz",
"integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==",
"requires": {
"crc-32": "^1.2.0",
"readable-stream": "^3.4.0"
},
"dependencies": {
"readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
}
}
},
"crypt": {
"version": "0.0.2",
"resolved": "https://registry.npm.taobao.org/crypt/download/crypt-0.0.2.tgz",
......@@ -463,6 +593,14 @@
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"requires": {
"once": "^1.4.0"
}
},
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
......@@ -547,6 +685,11 @@
"resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz",
"integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU="
},
"fast-image-size": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/fast-image-size/-/fast-image-size-0.1.3.tgz",
"integrity": "sha512-aYg0XgNJT1F3z90HP04JedMhyBPkpQTM1va/JnjQsVqemBvsO7sRYMLAgp0A0opVFTyyoTbesV8HLYBJegRkKg=="
},
"fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz",
......@@ -611,6 +754,11 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
},
"fs-extra": {
"version": "8.1.0",
"resolved": "http://localhost:4873/fs-extra/-/fs-extra-8.1.0.tgz",
......@@ -621,6 +769,11 @@
"universalify": "^0.1.0"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
......@@ -649,6 +802,19 @@
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"graceful-fs": {
"version": "4.2.10",
"resolved": "http://localhost:4873/graceful-fs/-/graceful-fs-4.2.10.tgz",
......@@ -764,6 +930,25 @@
"safer-buffer": ">= 2.1.2 < 3"
}
},
"ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
},
"immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
......@@ -846,6 +1031,17 @@
"verror": "1.10.0"
}
},
"jszip": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
"integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
"requires": {
"lie": "~3.3.0",
"pako": "~1.0.2",
"readable-stream": "~2.3.6",
"setimmediate": "^1.0.5"
}
},
"kareem": {
"version": "2.3.2",
"resolved": "https://registry.npm.taobao.org/kareem/download/kareem-2.3.2.tgz",
......@@ -856,6 +1052,52 @@
"resolved": "https://registry.npm.taobao.org/kitx/download/kitx-1.3.0.tgz",
"integrity": "sha1-qz7nxZjSsdYp/VVWj4aMREDCAOo="
},
"lazystream": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
"integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
"requires": {
"readable-stream": "^2.0.5"
}
},
"lie": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
"requires": {
"immediate": "~3.0.5"
}
},
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash.defaults": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
"integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="
},
"lodash.difference": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
"integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA=="
},
"lodash.flatten": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
"integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g=="
},
"lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
},
"lodash.union": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
"integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw=="
},
"log4js": {
"version": "6.6.1",
"resolved": "http://localhost:4873/log4js/-/log4js-6.6.1.tgz",
......@@ -941,6 +1183,14 @@
"mime-db": "1.46.0"
}
},
"minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"requires": {
"brace-expansion": "^1.1.7"
}
},
"moment": {
"version": "2.29.1",
"resolved": "https://registry.npm.taobao.org/moment/download/moment-2.29.1.tgz?cache=0&sync_timestamp=1601983320283&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmoment%2Fdownload%2Fmoment-2.29.1.tgz",
......@@ -1073,6 +1323,11 @@
"resolved": "https://registry.npm.taobao.org/nodemailer/download/nodemailer-6.5.0.tgz?cache=0&sync_timestamp=1614329161993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnodemailer%2Fdownload%2Fnodemailer-6.5.0.tgz",
"integrity": "sha1-0Swo2NSHeJGOJfGZnZeRAjGxddk="
},
"normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
},
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz",
......@@ -1083,6 +1338,38 @@
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
"integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
},
"officegen": {
"version": "0.6.5",
"resolved": "https://registry.npmjs.org/officegen/-/officegen-0.6.5.tgz",
"integrity": "sha512-CpSqy7UiGeu1OvMGbj2nXIVRsi5Tcnr09Ce4RDxkZMU5pgDRV8ipROAe8iuhNZaLFPBM/dxdcR4Ty/BglhfrDA==",
"requires": {
"archiver": "~5.2.0",
"async": "^3.2.0",
"fast-image-size": "^0.1.3",
"jszip": "^3.6.0",
"lodash": "^4.17.21",
"readable-stream": "~3.6.0",
"setimmediate": "~1.0.5",
"xmlbuilder": "^15.1.1"
},
"dependencies": {
"readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
},
"xmlbuilder": {
"version": "15.1.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
"integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="
}
}
},
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
......@@ -1096,6 +1383,14 @@
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"requires": {
"wrappy": "1"
}
},
"opentype.js": {
"version": "0.7.3",
"resolved": "https://registry.npm.taobao.org/opentype.js/download/opentype.js-0.7.3.tgz",
......@@ -1104,11 +1399,21 @@
"tiny-inflate": "^1.0.2"
}
},
"pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
},
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
},
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
......@@ -1198,6 +1503,32 @@
"util-deprecate": "~1.0.1"
}
},
"readdir-glob": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
"integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
"requires": {
"minimatch": "^5.1.0"
},
"dependencies": {
"brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"requires": {
"balanced-match": "^1.0.0"
}
},
"minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"requires": {
"brace-expansion": "^2.0.1"
}
}
}
},
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz",
......@@ -1328,6 +1659,11 @@
"send": "0.17.1"
}
},
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
},
"setprototypeof": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
......@@ -1437,6 +1773,47 @@
"opentype.js": "^0.7.3"
}
},
"tar-stream": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"requires": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
"fs-constants": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^3.1.1"
},
"dependencies": {
"bl": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"requires": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
"readable-stream": "^3.4.0"
},
"dependencies": {
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
}
}
},
"readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
}
}
},
"tencentcloud-sdk-nodejs": {
"version": "4.0.562",
"resolved": "https://registry.npmjs.org/tencentcloud-sdk-nodejs/-/tencentcloud-sdk-nodejs-4.0.562.tgz",
......@@ -1585,6 +1962,11 @@
"resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz",
"integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"ws": {
"version": "5.2.2",
"resolved": "https://registry.npm.taobao.org/ws/download/ws-5.2.2.tgz?cache=0&sync_timestamp=1615063662500&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-5.2.2.tgz",
......@@ -1628,6 +2010,45 @@
"version": "2.1.2",
"resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
},
"zip-stream": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz",
"integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==",
"requires": {
"archiver-utils": "^3.0.4",
"compress-commons": "^4.1.2",
"readable-stream": "^3.6.0"
},
"dependencies": {
"archiver-utils": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz",
"integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==",
"requires": {
"glob": "^7.2.3",
"graceful-fs": "^4.2.0",
"lazystream": "^1.0.0",
"lodash.defaults": "^4.2.0",
"lodash.difference": "^4.5.0",
"lodash.flatten": "^4.4.0",
"lodash.isplainobject": "^4.0.6",
"lodash.union": "^4.6.0",
"normalize-path": "^3.0.0",
"readable-stream": "^3.6.0"
}
},
"readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
}
}
}
}
}
......@@ -19,6 +19,7 @@
"mysql": "^2.18.1",
"node-xlsx": "^0.16.1",
"nodemailer": "^6.1.1",
"officegen": "^0.6.5",
"qs": "^6.11.0",
"request": "^2.88.0",
"svg-captcha": "^1.3.12",
......
[{"uscc":"91310115734553608B","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":22.448224852071004,"taskScore":75,"updateTime":1693451813247,"lastScore":543},{"uscc":"9131000055155945XF","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":22.916666666666664,"taskScore":75,"updateTime":1693365222200,"lastScore":542},{"uscc":"91310115MA1K3A537P","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":22.15909090909091,"taskScore":75,"updateTime":1693382742876,"lastScore":533},{"uscc":"91310115564782220J","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":19.57547169811321,"taskScore":75,"updateTime":1693470329616,"lastScore":539},{"uscc":"91310115MA1H750R7P","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":24.21875,"taskScore":75,"updateTime":1693183258519,"lastScore":540},{"uscc":"913100006317952255","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":34.46969696969697,"taskScore":75,"updateTime":1693190736338,"lastScore":554},{"uscc":"913100005868261163","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":22.340425531914892,"taskScore":75,"updateTime":1693298730589,"lastScore":542},{"uscc":"9131011577578746XY","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":22.1875,"taskScore":60,"updateTime":1693390063714,"lastScore":528},{"uscc":"91310000749279891H","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":20.16509433962264,"taskScore":-15,"updateTime":1690871694251,"lastScore":449},{"uscc":"91310000080089147T","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":23.879716981132077,"taskScore":75,"updateTime":1693214594153,"lastScore":534},{"uscc":"91310115MA1H785X6T","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":24.333333333333336,"taskScore":75,"updateTime":1693290209076,"lastScore":544},{"uscc":"91310115MA1H7JP700","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":22.5,"taskScore":75,"updateTime":1693189733249,"lastScore":548},{"uscc":"91310115MA1K3JN36Y","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":21.614583333333336,"taskScore":75,"updateTime":1693447428596,"lastScore":542},{"uscc":"91310000MA1K35WHXU","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":22.139830508474574,"taskScore":75,"updateTime":1693295556419,"lastScore":536},{"uscc":"91310115674579776R","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":26.07758620689655,"taskScore":75,"updateTime":1693181199555,"lastScore":547},{"uscc":"913101155529523332","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":23.588709677419356,"taskScore":75,"updateTime":1693457478370,"lastScore":528},{"uscc":"913101157664917120","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":25.537634408602152,"taskScore":75,"updateTime":1693387601190,"lastScore":551},{"uscc":"91310000755007083Q","startScore":400,"lastYearStar":3,"myDataScore":6.25,"baseDataScore":18.75,"myEnterpriseScore":20.113636363636363,"taskScore":-240,"updateTime":1693500062187,"lastScore":0},{"uscc":"91310115674629710W","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":22.780054644808743,"taskScore":75,"updateTime":1692945101012,"lastScore":548},{"uscc":"91310115MA1H9FTA0X","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":24.92283950617284,"taskScore":75,"updateTime":1693186264781,"lastScore":550},{"uscc":"913100005997953048","startScore":400,"lastYearStar":3,"myDataScore":12.5,"baseDataScore":25,"myEnterpriseScore":19.791666666666664,"taskScore":60,"updateTime":1692929298703,"lastScore":518},{"uscc":"91310115787877366B","startScore":400,"lastYearStar":3,"myDataScore":6.25,"baseDataScore":25,"myEnterpriseScore":23.38362068965517,"taskScore":-30,"updateTime":1693500062173,"lastScore":435},{"uscc":"9131011567786066XU","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":22.820723684210524,"taskScore":75,"updateTime":1693476699414,"lastScore":542},{"uscc":"91310115MA1K3B9G1G","startScore":400,"lastYearStar":3,"myDataScore":6.25,"baseDataScore":25,"myEnterpriseScore":21.354166666666664,"taskScore":75,"updateTime":1693292166634,"lastScore":513},{"uscc":"913101150660213305","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":21.979166666666668,"taskScore":75,"updateTime":1692932780330,"lastScore":547},{"uscc":"91310115358481304K","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":30.03472222222222,"taskScore":75,"updateTime":1693186243231,"lastScore":556},{"uscc":"91310115MA1K3PCLX3","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":22.995283018867923,"taskScore":75,"updateTime":1693190041325,"lastScore":548},{"uscc":"91310115MA1HAHRE1M","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":38.3578431372549,"taskScore":75,"updateTime":1690941631506,"lastScore":564},{"uscc":"91310115MA1HA3B668","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":24.125,"taskScore":75,"updateTime":1693298999691,"lastScore":543},{"uscc":"91310115076447108N","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":20.319905213270143,"taskScore":75,"updateTime":1692959938399,"lastScore":541},{"uscc":"91310120779310810K","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":21.519886363636363,"taskScore":75,"updateTime":1693293209323,"lastScore":541},{"uscc":"91310115MA1K44202G","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":50,"taskScore":45,"updateTime":1693469743639,"lastScore":539},{"uscc":"91310115MA1H9L1H6X","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":34.93589743589743,"taskScore":75,"updateTime":1692948434427,"lastScore":560},{"uscc":"91310115320839112Q","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":24.75,"taskScore":75,"updateTime":1693194982766,"lastScore":550},{"uscc":"91310115MA1K49J04M","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":25,"taskScore":-75,"updateTime":1693465935857,"lastScore":394},{"uscc":"913101153421210801","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":24.466463414634145,"taskScore":75,"updateTime":1692949758172,"lastScore":550},{"uscc":"91310115MA1K3TAP0N","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":25,"taskScore":75,"updateTime":1692940993533,"lastScore":544},{"uscc":"913100000935175937","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":16.5625,"taskScore":-60,"updateTime":1693460851043,"lastScore":401},{"uscc":"91310115342086027G","startScore":400,"lastYearStar":3,"myDataScore":12.5,"baseDataScore":25,"myEnterpriseScore":20.60810810810811,"taskScore":-150,"updateTime":1693500062199,"lastScore":459},{"uscc":"91310000324232748A","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":23.295454545454543,"taskScore":75,"updateTime":1693302145387,"lastScore":543},{"uscc":"91310115MA1H710C31","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":24.18032786885246,"taskScore":75,"updateTime":1693458263048,"lastScore":550},{"uscc":"91310000MA1K31KU98","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":23.958333333333336,"taskScore":75,"updateTime":1693304955266,"lastScore":543},{"uscc":"91310115MA1K3F7W0B","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":21.25,"taskScore":75,"updateTime":1693292084869,"lastScore":530},{"uscc":"91310000342317040Q","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":21.139705882352942,"taskScore":0,"updateTime":1692929265703,"lastScore":465},{"uscc":"91310000MA1K31G088","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":19.977678571428573,"taskScore":-105,"updateTime":1693500062211,"lastScore":419},{"uscc":"91310000MA1K373X12","startScore":400,"lastYearStar":3,"myDataScore":6.25,"baseDataScore":25,"myEnterpriseScore":31.798245614035086,"taskScore":75,"updateTime":1693457134733,"lastScore":539},{"uscc":"91310115MA1K3M4F1B","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":21.48809523809524,"taskScore":75,"updateTime":1693458190952,"lastScore":547},{"uscc":"91310115MA1K3GUJ33","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":22.179878048780488,"taskScore":75,"updateTime":1693201146390,"lastScore":526},{"uscc":"91310115MA1K39KW7R","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":26.822916666666668,"taskScore":75,"updateTime":1693362709277,"lastScore":546},{"uscc":"91310110MA1G8AMG5G","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":21.428571428571427,"taskScore":75,"updateTime":1693457051341,"lastScore":532},{"uscc":"9131011577242062XT","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":26.488095238095237,"taskScore":75,"updateTime":1693292772357,"lastScore":542},{"uscc":"91310000MA1K34D31A","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":20,"taskScore":75,"updateTime":1693292451631,"lastScore":530},{"uscc":"91310115MA1K3F5X6K","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":21.5625,"taskScore":-15,"updateTime":1693296698166,"lastScore":451},{"uscc":"91310115MA1K3GBY5T","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":25.986842105263158,"taskScore":75,"updateTime":1693358329034,"lastScore":545},{"uscc":"91310000MA1K382LX1","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":24.528301886792452,"taskScore":-30,"updateTime":1693500062223,"lastScore":479},{"uscc":"91310115MA1K3GJU39","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":37.23958333333333,"taskScore":75,"updateTime":1693190308122,"lastScore":563},{"uscc":"91310115MA1H8HGU1G","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":25,"taskScore":75,"updateTime":1693458957216,"lastScore":539},{"uscc":"91310115MA1K3HXH97","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":20.25602409638554,"taskScore":75,"updateTime":1693446955460,"lastScore":540},{"uscc":"91310115MA1K3D8938","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":22.023809523809522,"taskScore":75,"updateTime":1692936300216,"lastScore":541},{"uscc":"91310000320746696C","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":24.184782608695652,"taskScore":75,"updateTime":1693447547092,"lastScore":545},{"uscc":"91310115MA1K3GAL2H","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":24.375,"taskScore":75,"updateTime":1692930853577,"lastScore":529},{"uscc":"91310000MA1K30L58W","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":22.596153846153847,"taskScore":75,"updateTime":1693382497652,"lastScore":533},{"uscc":"91310000MA1K33MM13","startScore":400,"lastYearStar":3,"myDataScore":6.25,"baseDataScore":18.75,"myEnterpriseScore":23.4375,"taskScore":30,"updateTime":1692339564183,"lastScore":464},{"uscc":"91310115740262284J","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":24.348958333333336,"taskScore":75,"updateTime":1693292098823,"lastScore":534},{"uscc":"91310115MA1K3C1610","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":23.75,"taskScore":75,"updateTime":1693443969989,"lastScore":543},{"uscc":"91310115MA1K3PUM2M","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":21.875,"taskScore":30,"updateTime":1693452164581,"lastScore":487},{"uscc":"91310115MA1K42L91E","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":22.916666666666664,"myEnterpriseScore":22.61904761904762,"taskScore":30,"updateTime":1693462704198,"lastScore":495},{"uscc":"91310115MA1K3QBN23","startScore":400,"lastYearStar":3,"myDataScore":12.5,"baseDataScore":22.916666666666664,"myEnterpriseScore":16.686893203883496,"taskScore":-105,"updateTime":1693457315123,"lastScore":333},{"uscc":"91310115MA1K46LQ1T","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":18.333333333333332,"taskScore":75,"updateTime":1693373721884,"lastScore":544},{"uscc":"91310116086230324Q","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":23.75,"taskScore":75,"updateTime":1693379982577,"lastScore":543},{"uscc":"91310115MA1H9X9N9T","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":31.25,"taskScore":75,"updateTime":1693380540883,"lastScore":557},{"uscc":"91310115MA1K4EN54M","startScore":400,"lastYearStar":3,"myDataScore":0,"baseDataScore":16.666666666666664,"myEnterpriseScore":25,"taskScore":-240,"updateTime":1693500062234,"lastScore":0},{"uscc":"91310115MA1K3W6N73","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":24.671052631578945,"taskScore":75,"updateTime":1693196181913,"lastScore":544},{"uscc":"91310115MA1HA8LK83","startScore":400,"lastYearStar":3,"myDataScore":6.25,"baseDataScore":20.833333333333336,"myEnterpriseScore":21.875,"taskScore":-240,"updateTime":1693500062245,"lastScore":0},{"uscc":"91310115MA1K4JHY79","startScore":400,"lastYearStar":3,"myDataScore":6.25,"baseDataScore":20.833333333333336,"myEnterpriseScore":24.431818181818183,"taskScore":-195,"updateTime":1693500062259,"lastScore":317},{"uscc":"91310115MA1K4CAH4F","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":20.454545454545457,"taskScore":30,"updateTime":1692942707174,"lastScore":495},{"uscc":"91310115MA1H9E7KXX","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":27.84090909090909,"taskScore":75,"updateTime":1693457112279,"lastScore":542},{"uscc":"91310115789529437D","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":26.041666666666668,"taskScore":75,"updateTime":1693188999752,"lastScore":545},{"uscc":"91310115MA1K3M3P7G","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":17.934782608695652,"taskScore":75,"updateTime":1693464118792,"lastScore":537},{"uscc":"91310115MA1H7PK672","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":19.886363636363637,"taskScore":75,"updateTime":1693185345918,"lastScore":534},{"uscc":"91310115342032571U","startScore":400,"lastYearStar":3,"myDataScore":6.25,"baseDataScore":20.833333333333336,"myEnterpriseScore":23.4375,"taskScore":-240,"updateTime":1693500062270,"lastScore":0},{"uscc":"91310115076436951L","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":25,"taskScore":75,"updateTime":1693298301950,"lastScore":535},{"uscc":"91310115MA1K4JH5XK","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":19.196428571428573,"taskScore":30,"updateTime":1693298704137,"lastScore":493},{"uscc":"91310115551536936A","startScore":400,"lastYearStar":3,"myDataScore":6.25,"baseDataScore":20.833333333333336,"myEnterpriseScore":25,"taskScore":-240,"updateTime":1693500062280,"lastScore":0},{"uscc":"91310115MA1K4H7H92","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":21.875,"taskScore":75,"updateTime":1693296403135,"lastScore":547},{"uscc":"91310115MA1HB1CG4B","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":35.09615384615385,"taskScore":75,"updateTime":1692931247370,"lastScore":561},{"uscc":"91310115MA1K4EBH6R","startScore":400,"lastYearStar":3,"myDataScore":6.25,"baseDataScore":20.833333333333336,"myEnterpriseScore":27.500000000000004,"taskScore":75,"updateTime":1693277689913,"lastScore":530},{"uscc":"91310115MA1H931B83","startScore":400,"lastYearStar":3,"myDataScore":6.25,"baseDataScore":20.833333333333336,"myEnterpriseScore":21.25,"taskScore":45,"updateTime":1693199518694,"lastScore":484},{"uscc":"91310115MA1K44MBXB","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":35.85526315789473,"taskScore":75,"updateTime":1693443760984,"lastScore":561},{"uscc":"91310115MA1H7WKP15","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":37.5,"taskScore":75,"updateTime":1693192062711,"lastScore":563},{"uscc":"91310000MA1K353L80","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":26.73611111111111,"taskScore":75,"updateTime":1692941217045,"lastScore":552},{"uscc":"91310115MA1K4PPC4K","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":25,"taskScore":75,"updateTime":1693382009015,"lastScore":544},{"uscc":"91310115MA1K4DAF08","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":25,"taskScore":45,"updateTime":1692931363047,"lastScore":514},{"uscc":"91310115MA1K4P138R","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":50,"taskScore":75,"updateTime":1693200421488,"lastScore":559},{"uscc":"91310115MA1K3DT2XP","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":25,"taskScore":75,"updateTime":1693287508908,"lastScore":535},{"uscc":"91310115MA1K4LF28J","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":45.535714285714285,"taskScore":75,"updateTime":1693213533059,"lastScore":571},{"uscc":"91310115341994912D","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":48.89705882352941,"taskScore":75,"updateTime":1693449359838,"lastScore":574},{"uscc":"91310115MA7E2E3B0C","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":47.767857142857146,"taskScore":75,"updateTime":1693208185283,"lastScore":573},{"uscc":"91310116323149774X","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":23.61111111111111,"taskScore":75,"updateTime":1692940539608,"lastScore":543},{"uscc":"91310115MA1K3H5Q4N","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":50,"taskScore":75,"updateTime":1692930738201,"lastScore":560},{"uscc":"123456789123456789","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":20.833333333333336,"myEnterpriseScore":50,"taskScore":-135,"updateTime":1693500062291,"lastScore":361},{"uscc":"91310115MA7G5U7AX6","startScore":400,"lastYearStar":3,"myDataScore":25,"baseDataScore":25,"myEnterpriseScore":50,"taskScore":75,"updateTime":1693473496783,"lastScore":570},{"uscc":"91310115069312504K","startScore":400,"lastYearStar":3,"myDataScore":18.75,"baseDataScore":25,"myEnterpriseScore":44.642857142857146,"taskScore":75,"updateTime":1692931469383,"lastScore":564}]
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -4,7 +4,8 @@
<path>127.0.0.1</path>
<port>27017</port>
<w>1</w>
<dataBase>baseDB</dataBase>
<!-- <dataBase>baseDB</dataBase> -->
<dataBase>zjscTest</dataBase>
<wtimeoutMS>30000</wtimeoutMS>
</mongodb>
<!-- 小程序的secret 和 appid -->
......
......@@ -72,7 +72,12 @@ export async function enterpriseList(createType:number, fuHuaQiUscc:string, indu
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
/** 返回的isCreate字段为字符串 当为导入数据时这里显示为空字符 */
if (!info.taskId || info.enterpriseIsInPut) changeData.isCreate = "底库数据";
if (!info.taskId || info.enterpriseIsInPut) {
if (info.enterpriseIsInPut) changeData.isCreate = "底库数据";
else {
changeData.isCreate = (changeData.isCreate)? "补录新注册":"补录新迁入";
}
}
else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入";
changeData.state = verificationEnumTools.changeEnumValue(configEnum.FUHUASTATE, changeData.state);
......@@ -139,7 +144,7 @@ export async function enterpriseList(createType:number, fuHuaQiUscc:string, indu
* @param isNaturalPersonHolding 自然人控股
* @returns 二维数组
*/
export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string, industry, isNaturalPersonHolding:number, state:number, createTime:number, name:string, type:number) {
export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string, industry, isNaturalPersonHolding:number, state:number, createTime:number, name:string, type:number, isFuHuaQi:boolean) {
/**拼接查询条件 */
let selectParam:any = {};
if (type == configEnum.OUTPUTTYPE.当前数据) {
......@@ -154,6 +159,8 @@ export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string
if (state != configEnum.INSIDESTATE.全部) {
if (state == configEnum.INSIDESTATE.实体孵化) selectParam.state = configEnum.FUHUASTATE.实体孵化;
if (state == configEnum.INSIDESTATE.虚拟孵化) selectParam.state = configEnum.FUHUASTATE.虚拟孵化;
} else {
selectParam.state = {"$ne":configEnum.FUHUASTATE.迁出};
}
if (createTime) {
let startT = createTime;
......@@ -165,6 +172,9 @@ export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string
}
}
selectParam["$or"] = [{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}] ; //未提交的企业不能查看
if (isFuHuaQi) {
selectParam.fuHuaQiUscc = fuHuaQiUscc;
}
/**查询内容 */
let usccMap = await fuHuaQiData.findAllFuHuaQiOperationNameMap();//用于将孵化器uscc变成孵化器名称
......@@ -193,8 +203,12 @@ export async function outPutEnterpriseData(createType:number, fuHuaQiUscc:string
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
if (!info.taskId || info.enterpriseIsInPut) changeData.isCreate = "底库数据";
else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入";
if (!info.taskId || info.enterpriseIsInPut) {
if (info.enterpriseIsInPut) changeData.isCreate = "底库数据";
else {
changeData.isCreate = (changeData.isCreate)? "补录新注册":"补录新迁入";
}
}else changeData.isCreate = (changeData.isCreate) ? "新注册" : "新迁入";
if (!changeAddToString(info.oldLogonAddress)) {
changeData.oldLogonAddress = "-";
......@@ -312,7 +326,7 @@ export async function enterpriseMoveOutList(name:string, fuHuaQiUscc:string, ind
if (isNaturalPersonHolding == 2 || isNaturalPersonHolding == 3) {
selectParam.isNaturalPersonHolding = isNaturalPersonHolding == 2 ? true : false;
}
selectParam.draftLock = true; //未提交的企业不能查看
// selectParam.draftLock = true; //未提交的企业不能查看
/**需要用到的查询数据 */
let usccMap = await fuHuaQiData.findAllFuHuaQiOperationNameMap();//用于将孵化器uscc变成孵化器名称
......@@ -359,7 +373,7 @@ export async function enterpriseMoveOutList(name:string, fuHuaQiUscc:string, ind
* @param type 页面
* @returns
*/
export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:string, industry, isNaturalPersonHolding:number, type:number) {
export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:string, industry, isNaturalPersonHolding:number, type:number, isFuHuaQi:boolean) {
let fileName = "全部";
/**拼接查询条件 */
let selectParam:any = {state:configEnum.FUHUASTATE.迁出};
......@@ -378,6 +392,7 @@ export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:strin
selectParam.draftLock = true; //未提交的企业不能查看
fileName = "当前数据";
}
if (isFuHuaQi) selectParam.fuHuaQiUscc = fuHuaQiUscc;
/**需要用到的查询数据 */
......@@ -397,7 +412,7 @@ export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:strin
let changeData:any = extractData(splitResultConfig.EnterpriseMoveOutListConfig, info, true);
/**匹配所属孵化器名称 匹配不上时这里显示空字符串 */
changeData.fuhuaqiUscc = usccMap[info.fuHuaQiUscc] || "";
changeData.fuHuaQiUscc = usccMap[info.fuHuaQiUscc] || "";
changeData.isNaturalPersonHolding = changeData.isNaturalPersonHolding ? "是" : "否";
/**将枚举值转为字符 */
......@@ -434,7 +449,7 @@ export async function outPutEnterpriseMoveOutList(name:string, fuHuaQiUscc:strin
* @param quarter 季度
* @param page 页面
*/
export async function getBusinessDataList(name:string, year:number, quarter:number, page:number) {
export async function getBusinessDataList(name:string, year:number, quarter:number, page:number, fuHuaQiUscc?) {
let selectParam:any = {};
if (name) selectParam.name = {"$regex":`${name}`};
......@@ -442,6 +457,7 @@ export async function getBusinessDataList(name:string, year:number, quarter:numb
selectParam.year = year;
if (quarter) selectParam.quarter = quarter;
}
if (fuHuaQiUscc) selectParam.fuHuaQiUscc = fuHuaQiUscc;
let dataBaseList = await businessData.findBusinessDataByParamsToPage(selectParam, (page-1)*10);
let dataCount = await businessData.findBusinessDataCountByParams(selectParam);
......@@ -466,7 +482,7 @@ export async function getBusinessDataList(name:string, year:number, quarter:numb
* @param year 年份
* @param quarter 季度
*/
export async function outPutBusinessDataList(name:string, year:number, quarter:number, type:number) {
export async function outPutBusinessDataList(name:string, year:number, quarter:number, type:number, fuHuaQiUscc) {
let fileName = "全部";
/**拼接查询条件 */
......@@ -483,6 +499,8 @@ export async function outPutBusinessDataList(name:string, year:number, quarter:n
fileName = "当前数据";
}
if (fuHuaQiUscc) selectParam.fuHuaQiUscc = fuHuaQiUscc;
let dataBaseList = await businessData.findBusinessDataByParams(selectParam);
let keyList = [ "name", "year", "quarter", "BI", "RD", "TXP"];
......@@ -515,7 +533,7 @@ export async function outPutBusinessDataList(name:string, year:number, quarter:n
* @param type 人才类型
* @param page 页面
*/
export async function getInitialTeamList(name:string, member:string, type:number, page:number) {
export async function getInitialTeamList(name:string, member:string, type:number, page:number, fuHuaQiUscc?) {
let selectParam:any = {};
if (name) selectParam.name = {"$regex":`${name}`};
if (member) selectParam.memberName = member;
......@@ -523,6 +541,15 @@ export async function getInitialTeamList(name:string, member:string, type:number
verificationEnumTools.eccEnumValue("企业创始团队列表", "type", configEnum.ENTERPRISETEAM, type );
selectParam.type = type;
}
if (fuHuaQiUscc) {
let idList = [];
let thisFHQEnterpriseList = await enterpriseData.findEnterpriseList({state:{"$ne":configEnum.FUHUASTATE.迁出}, fuHuaQiUscc:fuHuaQiUscc});
thisFHQEnterpriseList.forEach(info => {
let {uscc} = info;
idList.push(uscc);
});
selectParam.uscc = {"$in":idList};
}
let dataBaseList = await initialTeamData.findEnterpriseInitialTeamsByParamToPage(selectParam, (page-1)*10 );
let count = await initialTeamData.findEnterpriseInitialTeamsCountByParamToPage(selectParam);
......@@ -548,7 +575,7 @@ export async function getInitialTeamList(name:string, member:string, type:number
* @param type
* @returns
*/
export async function outPutInitialTeamList(name:string, member:string, memberType:number, type:number) {
export async function outPutInitialTeamList(name:string, member:string, memberType:number, type:number, fuHuaQiUscc) {
let fileName = "全部";
/**拼接查询条件 */
let selectParam:any = {};
......@@ -562,6 +589,15 @@ export async function outPutInitialTeamList(name:string, member:string, memberTy
fileName = "当前数据";
}
if (fuHuaQiUscc) {
let idList = [];
let thisFHQEnterpriseList = await enterpriseData.findEnterpriseList({state:{"$ne":configEnum.FUHUASTATE.迁出}, fuHuaQiUscc:fuHuaQiUscc});
thisFHQEnterpriseList.forEach(info => {
let {uscc} = info;
idList.push(uscc);
});
selectParam.uscc = {"$in":idList};
}
let dataBaseList = await initialTeamData.findEnterpriseInitialTeamsByParam(selectParam );
......
......@@ -13,6 +13,7 @@ import { changeEnumValue } from "../../../util/verificationEnum";
import { extractData } from "../../../util/piecemeal";
import * as financingInfoData from "../../../data/enterprise/financingInfo";
import moment = require("moment");
import { findEnterpriseList } from "../../../data/enterprise/enterprise";
/**
......@@ -75,7 +76,7 @@ export async function financingList(monthData:string, fuHuaQiName:string, indust
* @param type 页数
* @returns
*/
export async function outPutFinancingList(monthData:string, fuHuaQiName:string, industry, fuHuaQiInvestment:number, type:number) {
export async function outPutFinancingList(monthData:string, fuHuaQiName:string, industry, fuHuaQiInvestment:number, type:number, isFuHuaQi:boolean) {
let selectParam:any = {};
if (type == configEnum.OUTPUTTYPE.当前数据 ) {
/**如果选择当前数据 则拼接查询条件 */
......@@ -95,6 +96,11 @@ export async function outPutFinancingList(monthData:string, fuHuaQiName:string,
selectParam.fuHuaQiInvestment = fuHuaQiInvestment == 2 ? true : false;
}
}
if (isFuHuaQi) {
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByName(fuHuaQiName);
if(!fuHuaQiInfo) throw new BizError(ERRORENUM.未找到数据, `管理后台查询融资列表时 ${fuHuaQiName}不存在`);
selectParam.fuHuaQiUscc = fuHuaQiInfo.uscc;
}
/**主要查询 */
let dataBaseList = await financingData.findFinancingList(selectParam );
......@@ -138,7 +144,7 @@ export async function outPutFinancingList(monthData:string, fuHuaQiName:string,
* @param fuHuaQiInvestment 孵化器是否参与投资
* @param page 页面
*/
export async function getEnterpriseFinancing(name:string, financingRounds:number, fuHuaQiInvestment:number, page:number) {
export async function getEnterpriseFinancing(name:string, financingRounds:number, fuHuaQiInvestment:number, page:number, fuHuaQiUscc?) {
let selectParam:any = {};
if (name) selectParam.name = {"$regex":`${name}`};
......@@ -146,6 +152,15 @@ export async function getEnterpriseFinancing(name:string, financingRounds:number
if (fuHuaQiInvestment == 2 || fuHuaQiInvestment == 3) {
selectParam.fuHuaQiInvestment = fuHuaQiInvestment == 2 ? true : false;
}
if (fuHuaQiUscc) {
let idList = [];
let thisFHQEnterpriseList = await findEnterpriseList({state:{"$ne":configEnum.FUHUASTATE.迁出}, fuHuaQiUscc:fuHuaQiUscc});
thisFHQEnterpriseList.forEach(info => {
let {uscc} = info;
idList.push(uscc);
});
selectParam.uscc = {"$in":idList};
}
let dataBaseList = await financingInfoData.selectFinancingListByParamsToPage(selectParam, page);
let count = await financingInfoData.selectFinancingCountByParams(selectParam);
......@@ -171,7 +186,7 @@ export async function getEnterpriseFinancing(name:string, financingRounds:number
* @param fuHuaQiInvestment
* @param type
*/
export async function outPutEnterpriseFinancing(name:string, financingRounds:number, fuHuaQiInvestment:number, type:number) {
export async function outPutEnterpriseFinancing(name:string, financingRounds:number, fuHuaQiInvestment:number, type:number, fuHuaQiUscc) {
let selectParam:any = {};
let fileName = "全部";
if (type == configEnum.OUTPUTTYPE.当前数据 ) {
......@@ -184,6 +199,16 @@ export async function outPutEnterpriseFinancing(name:string, financingRounds:num
fileName = "当前数据";
}
if (fuHuaQiUscc) {
let idList = [];
let thisFHQEnterpriseList = await findEnterpriseList({state:{"$ne":configEnum.FUHUASTATE.迁出}, fuHuaQiUscc:fuHuaQiUscc});
thisFHQEnterpriseList.forEach(info => {
let {uscc} = info;
idList.push(uscc);
});
selectParam.uscc = {"$in":idList};
}
let dataBaseList = await financingInfoData.selectFinancingListByParams(selectParam);
let keyList = [
......
......@@ -403,7 +403,6 @@ export async function fuHuaQiScore(time:number, name:string, page:number) {
for (let key in nameMap) {
if (nameMap[key] == name) param.uscc = key;
}
}
let rankList = [];
......@@ -420,8 +419,8 @@ export async function fuHuaQiScore(time:number, name:string, page:number) {
} else {
let endT = moment(time).endOf('month').valueOf();
let datList = await scoreLogData.getUptotheminuteScore(time, endT);
param.timeMs = {"$lt":moment(time).endOf('month').valueOf() }
let datList = await scoreLogData.getUptotheminuteScore(param);
datList.forEach(info => {
let name = nameMap[info._id]
......@@ -467,10 +466,9 @@ export async function outPutFuHuaQiScore(time:number) {
} else {
let endT = moment(time).endOf('month').valueOf();
let datList = await scoreLogData.getUptotheminuteScore(time, endT);
param.timeMs = {"$lt":moment(time).endOf('month').valueOf() }
let datList = await scoreLogData.getUptotheminuteScore(param);
outPutName = `${new Date(time).getFullYear()}${new Date(time).getMonth() + 1}月`;
rankList
datList.forEach(info => {
let name = nameMap[info._id]
if (!name) return;
......
......@@ -6,6 +6,7 @@
import * as monthTableData from "../../data/fuHuaQi/monthTask/monthTable";
import * as taskData from "../../data/fuHuaQi/monthTask/task";
import * as enterpriseData from "../../data/enterprise/enterprise";
import * as scoreBiz from "../mobileFuHuaQi/fuHuaQi/score";
import * as fuhuaqiData from "../../data/fuHuaQi/fuhuaqi";
import * as financingData from "../../data/fuHuaQi/monthTask/financing";
import { CHANGEMODE, FUHUASTATE, INDUSTRY, LISTINGSITUATION, SCOREWAYS, TASKTYPEENUM } from "../../config/enum";
......@@ -22,8 +23,14 @@ import moment = require("moment");
import * as sysTools from "../../tools/system";
import { findFuHuaQiScoreInfo_repair, initFuHuaQiScore_repair } from "../../data/fuHuaQi/scoreRepair";
import { addMany_repair, getAllLog_repair } from "../../data/fuHuaQi/scoreLogRepair";
import { findI18nRegisterListByParam, findOneI18nRegister } from "../../data/fuHuaQi/instituQualify/i18nRegister";
import * as icrData from "../../data/fuHuaQi/instituQualify/icr";
import * as startupTeacherData from "../../data/fuHuaQi/instituQualify/startupTeacher";
import * as zjBeyondLayoutData from "../../data/fuHuaQi/instituQualify/zjBeyondLayout";
const xlsx = require('node-xlsx');
const path = require('path');
const fs = require('fs');
/**
* 发放1月数据
......@@ -135,7 +142,6 @@ async function initTaskScore(uscc:string, type:number, isSubmitTask:boolean, tim
let newCountScore = countScore - oldScore + newScore;
if (SCOREWAYS.任务得分 == type) {
newScore = -1 * newScore;
await scoreLogData.addLogTOInitData(uscc, type, changeMode, newCountScore, newScore, timeMs,subType);
} else await scoreLogData.addLogTOInitData(uscc, type, changeMode, newCountScore, timeMs,newScore);
......@@ -583,157 +589,344 @@ export async function addBussiness() {
return {};
}
/**
* 内网用 外网不能调用
*/
export async function repairScore() {
let data = await findFuHuaQiList({});
let createMonthMap = {};
let addList = [];
data.forEach(info => {
addList.push({
uscc:info.uscc,//孵化器uscc
startScore: 400,//初始分 400 创建孵化器的时候要在这里加上
lastYearStar: 3,//去年星值 这里默认是3星 每年12月31日12时,需要根据分算星然后更新到这里
myDataScore: 0,//我的数据获得的分数
baseDataScore: 0,//基础数据获得的分数
myEnterpriseScore: 0,//我的企业获得的分数
taskScore: 0,//任务获得分数
updateTime: new Date().valueOf(),//更新时间戳
/**上一次评分 */
lastScore:0//在获取列表的时候要同步数据
});
// addList.push({
// uscc:info.uscc,//孵化器uscc
// startScore: 400,//初始分 400 创建孵化器的时候要在这里加上
// lastYearStar: 3,//去年星值 这里默认是3星 每年12月31日12时,需要根据分算星然后更新到这里
// myDataScore: 0,//我的数据获得的分数
// baseDataScore: 0,//基础数据获得的分数
// myEnterpriseScore: 0,//我的企业获得的分数
// taskScore: 0,//任务获得分数
// updateTime: new Date().valueOf(),//更新时间戳
// /**上一次评分 */
// lastScore:0//在获取列表的时候要同步数据
// });
let createMonth = !info.createTime ? 0 : new Date(info.createTime).getMonth();
createMonthMap[info.uscc] = createMonth;
});
await initFuHuaQiScore_repair(addList);
// await initFuHuaQiScore_repair(addList);
let list = await scoreLogData.getAllLog();
let firstSelectList = await scoreLogData.getAllLog();
let tagTimeOutList = await getAllLog_repair({timeMs:{"$gt":1691377409842}, ways:{"$ne":SCOREWAYS.任务得分} });
let list = firstSelectList.concat(tagTimeOutList);
list.sort((a,b) => {return a.timeMs - b.timeMs});
/**获取除任务得分之外的初始分 */
let initSortMap = {};//格式 {uscc:{type:info }}
let logMap = {};//格式 {uscc:[]}
/**获取非任务得分 */
let 我的信息 = {};
let 我的数据 = {};
let 我的企业数据 = {};
list.forEach(info => {
let {uscc, ways, addScore, timeMs} = info;
if (ways == SCOREWAYS.任务得分) return;
if (!logMap[uscc]) logMap[uscc] = [];
logMap[uscc].push({
ways,addScore, timeMs
});
if (!我的信息[uscc]) 我的信息[uscc] = [];
if (!我的数据[uscc]) 我的数据[uscc] = [];
if (!我的企业数据[uscc]) 我的企业数据[uscc] = [];
if (ways == SCOREWAYS.我的企业数据) 我的企业数据[uscc].push({ ways,addScore, timeMs });
else if (ways == SCOREWAYS.我的信息) 我的信息[uscc].push({ ways,addScore, timeMs });
else if (ways == SCOREWAYS.我的数据) 我的数据[uscc].push({ ways,addScore, timeMs });
if (!initSortMap[uscc]) initSortMap[uscc] = {};
if (!initSortMap[uscc][ways]) initSortMap[uscc][ways] = addScore;
});
let successMap = {};//修复好的数据 格式 {uscc:[] }
/**延续性算分 */
for (let uscc in 我的信息) {
let subList = 我的信息[uscc].sort( (a, b) => {return a.timeMs - b.timeMs});
if (!successMap[uscc]) successMap[uscc] = [];
/**前一个分数减去后一个分数得到分值差 */
let score = 0;
subList.forEach( (info, index) => {
let { addScore, timeMs } = info;
if (!index) {
score = addScore;//赋值初始分数
successMap[uscc].push({
changeMode:CHANGEMODE.增加,
ways:SCOREWAYS.我的信息,
addScore:addScore,
timeMs,
month:moment(timeMs).format("YYYY-MM-DD"),
});
}
else {
let changeScore = addScore -score;
score = addScore;
successMap[uscc].push({
changeMode:changeScore > 0 ?CHANGEMODE.增加 : CHANGEMODE.减少,
ways:SCOREWAYS.我的信息,
addScore:changeScore,
timeMs,
month:moment(timeMs).format("YYYY-MM-DD"),
});
}
});
}
for (let uscc in 我的数据) {
let subList = 我的数据[uscc].sort( (a, b) => {return a.timeMs - b.timeMs});
if (!successMap[uscc]) successMap[uscc] = [];
/**前一个分数减去后一个分数得到分值差 */
let score = 0;
subList.forEach( (info, index) => {
let { addScore, timeMs } = info;
if (!index) {
score = addScore;//赋值初始分数
successMap[uscc].push({
changeMode:CHANGEMODE.增加,
ways:SCOREWAYS.我的数据,
addScore:addScore,
timeMs,
month:moment(timeMs).format("YYYY-MM-DD"),
});
}
else {
let changeScore = addScore - score;
score = addScore;
successMap[uscc].push({
changeMode:changeScore > 0 ?CHANGEMODE.增加 : CHANGEMODE.减少,
ways:SCOREWAYS.我的数据,
addScore:changeScore,
timeMs,
month:moment(timeMs).format("YYYY-MM-DD"),
});
}
});
}
for (let uscc in 我的企业数据) {
let subList = 我的企业数据[uscc].sort( (a, b) => {return a.timeMs - b.timeMs});
if (!successMap[uscc]) successMap[uscc] = [];
/**前一个分数减去后一个分数得到分值差 */
let score = 0;
subList.forEach( (info, index) => {
let { addScore, timeMs } = info;
if (!index) {
score = addScore;//赋值初始分数
successMap[uscc].push({
changeMode:CHANGEMODE.增加,
ways:SCOREWAYS.我的企业数据,
addScore:addScore,
timeMs,
month:moment(timeMs).format("YYYY-MM-DD"),
});
}
else {
let changeScore = addScore - score;
score = addScore;
successMap[uscc].push({
changeMode:changeScore > 0 ?CHANGEMODE.增加 : CHANGEMODE.减少,
ways:SCOREWAYS.我的企业数据,
addScore:changeScore,
timeMs,
month:moment(timeMs).format("YYYY-MM-DD"),
});
}
});
}
/**算任务分数 */
let taskMap = {};
let taskList = await taskData.findTaskListByParam({});
for (let i =0; i < taskList.length; i++) {
let {fuHuaQiUscc, isSubmit, type, month, year, submitTime} = taskList[i];
if (!logMap[fuHuaQiUscc]) logMap[fuHuaQiUscc] = [];
if (month == 8) continue;
let addScore = 0;
if (isSubmit) addScore = getOnceTaskScore(createMonthMap[fuHuaQiUscc]);
else addScore = getOnceTaskDeductScore(createMonthMap[fuHuaQiUscc]);
let ms = 0;
if (isSubmit) ms =submitTime;
let timeMs = 0;
if (isSubmit) timeMs = submitTime;
else {
ms = new Date(`${year}-${month+2}-01 00:00:00`).valueOf();
timeMs = new Date(`${year}-${month+1}-1 00:00:0${type}`).valueOf();
}
logMap[fuHuaQiUscc].push({
if (!successMap[fuHuaQiUscc]) successMap[fuHuaQiUscc] = [];
if (!taskMap[fuHuaQiUscc]) taskMap[fuHuaQiUscc] = [];
taskMap[fuHuaQiUscc].push({
taskType:type,
timeMs,
ways:SCOREWAYS.任务得分,
addScore,
changeMode:addScore>0 ? CHANGEMODE.增加 : CHANGEMODE.减少,
month:moment(timeMs).format("YYYY-MM-DD"),
});
successMap[fuHuaQiUscc].push({
taskType:type,
ms,
timeMs,
ways:SCOREWAYS.任务得分,
addScore
addScore,
changeMode:addScore>0 ? CHANGEMODE.增加 : CHANGEMODE.减少,
month:moment(timeMs).format("YYYY-MM-DD"),
});
}
/**排序算分 */
for (let uscc in logMap) {
let subList = logMap[uscc];
subList.sort( (a, b) => {return a.ms-b.ms});//按时间顺序排序
/**拼接该孵化器得分日志 */
let myDataScore = 0;//我的数据获得的分数
let baseDataScore = 0;//基础数据获得的分数
let myEnterpriseScore = 0;//我的企业获得的分数
let taskScore = 0;//任务获得分数
let updateTime = 0//最后一次更新时间
// let secondMap = {};
/**排序算总分 */
let filesList = [];
for (let uscc in successMap) {
let subList = successMap[uscc].sort( (a, b) => {return a.timeMs - b.timeMs});
let thisNodeScore = 400;
let nodeScore = 400;
let itemLogList = [];
let taskLogList = [];
let 任务得分 = 0;
let 我的企业得分 = 0;
let 我的数据得分 = 0;
let 我的信息得分 = 0;
let sortLogs = [];
subList.forEach(info => {
let {addScore} = info;
thisNodeScore += addScore;
let changeMode = addScore > 0 ? CHANGEMODE.增加 : CHANGEMODE.减少;
switch(info.ways) {
case SCOREWAYS.任务得分: taskScore+=addScore; break;
case SCOREWAYS.我的企业数据: myEnterpriseScore+=addScore; break;
case SCOREWAYS.我的信息:baseDataScore += addScore; break;
case SCOREWAYS.我的数据:myDataScore += addScore; break;
}
updateTime = info.ms;
let sortInfo:any = {
uscc,
ways:info.ways,
changeMode,
score:thisNodeScore,
addScore:addScore,
timeMs:info.ms
let {taskType, timeMs, ways, addScore, changeMode, month} = info;
nodeScore += addScore;
filesList.push({taskType, timeMs, ways, addScore, changeMode, score:nodeScore, uscc});
itemLogList.push({ways, addScore, score:nodeScore, month});
if (ways == SCOREWAYS.任务得分){
任务得分 += addScore;
taskLogList.push({taskType, ways, addScore, score:nodeScore,month});//todo
}
if (ways == SCOREWAYS.我的企业数据) 我的企业得分 += addScore;
if (ways == SCOREWAYS.我的数据) 我的数据得分 += addScore;
if (ways == SCOREWAYS.我的信息) 我的信息得分 += addScore;
});
/**验算分数 */
let dbScoreInfo = await scoreData.findFuHuaQiScoreInfo(uscc);
let check = dbScoreInfo.myDataScore + dbScoreInfo.baseDataScore + dbScoreInfo.myEnterpriseScore + dbScoreInfo.taskScore + 400;
if (Math.ceil(check) != Math.ceil(nodeScore)) console.log("验算不通过")
}
if (info.taskType) sortInfo.taskType = info.taskType;
/** 将第二次清洗好的有ms的数据和 大于 1691377409842 时刻的数据进行组合*/
sortLogs.push(sortInfo);
});
// fs.writeFileSync(path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", "scoreLog.json" ), JSON.stringify(filesList));
//更新最后得分
let sortDataInfo = await findFuHuaQiScoreInfo_repair(uscc);
sortDataInfo.myDataScore = myDataScore;
sortDataInfo.baseDataScore = baseDataScore;
sortDataInfo.myEnterpriseScore = myEnterpriseScore;
sortDataInfo.taskScore = taskScore;
sortDataInfo.updateTime = updateTime;
sortDataInfo.lastScore = myDataScore + baseDataScore + myEnterpriseScore + taskScore + 400;
await sortDataInfo.save();
}
await addMany_repair(sortLogs);
console.log("完成",uscc,"的分数修复");
}
export async function changeScoreLogByJson() {
let dataStr = fs.readFileSync(path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", "scoreLog.json" ));
let data = JSON.parse(dataStr);
await scoreLogData.addMany(data);
console.log("分数日志修复成功");
// let dataStr2 = fs.readFileSync(path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", "score.json" ));
// let data2 = JSON.parse(dataStr2);
// await initFuHuaQiScore(data2);
// console.log("分数修复成功");
return {};
}
export async function changeTaskScortTimeData() {
let list = await scoreLogData.getLogByParam({ways:SCOREWAYS.任务得分, changeMode:CHANGEMODE.减少})
for (let i = 0; i < list.length; i++) {
let {uscc, ways, taskType, changeMode, timeMs} = list[i];
let newTimeMs = moment(timeMs).subtract(1,'months').valueOf();
await scoreLogData.updateLog(uscc, timeMs, ways,taskType, newTimeMs);
}
console.log("完成全部分数数据修复");
}
export async function changeScortData() {
let logList = await getAllLog_repair();
let addList= [];
logList.forEach(info => {
let addinfo = {uscc:info.uscc,
ways:info.ways,
taskType:info.taskType,
changeMode:info.changeMode,
score:info.score,
addScore:info.addScore,
timeMs:info.timeMs};
addList.push(addinfo);
export async function instituQualifyNameChangeToOperationName() {
let nameMap = await fuhuaqiData.findAllFuHuaQiOperationNameMap()
let i18nList = await findI18nRegisterListByParam({});
for (let i = 0; i < i18nList.length; i++) {
let {id, uscc} = i18nList[i];
let itemInfo = await findOneI18nRegister(id)
itemInfo.name = nameMap[uscc];
await itemInfo.save();
}
let icrList = await icrData.findListDataByParam({});
for (let i = 0; i < icrList.length; i++) {
let {id, uscc} = icrList[i];
let itemInfo = await icrData.findOneData(id)
itemInfo.name = nameMap[uscc];
await itemInfo.save();
}
let startupTeacherList = await startupTeacherData.findListDataByParam({});
for (let i = 0; i < startupTeacherList.length; i++) {
let {id, uscc} = startupTeacherList[i];
let itemInfo = await startupTeacherData.findOneData(id)
itemInfo.name = nameMap[uscc];
await itemInfo.save();
}
let zjBeyondLayoutList = await zjBeyondLayoutData.findListDataByParam({});
for (let i = 0; i < zjBeyondLayoutList.length; i++) {
let {id, uscc} = zjBeyondLayoutList[i];
let itemInfo = await zjBeyondLayoutData.findOneData(id)
itemInfo.name = nameMap[uscc];
await itemInfo.save();
}
console.log("完成全部名称数据修复");
}
export async function correctFuHuaQiScoreData() {
let data = await findFuHuaQiList({});
let createMonthMap = {};
data.forEach(info => {
let createMonth = !info.createTime ? 0 : new Date(info.createTime).getMonth();
createMonthMap[info.uscc] = createMonth;
});
await scoreLogData.addMany(addList);
let taskList = await taskData.findTaskListByParam({});
let taskScoreMap = {};
for (let i =0; i < taskList.length; i++) {
let {fuHuaQiUscc, isSubmit, type, month, year, submitTime} = taskList[i];
if (month == 8) continue;
let addScore = 0;
if (isSubmit) addScore = getOnceTaskScore(createMonthMap[fuHuaQiUscc]);
else addScore = getOnceTaskDeductScore(createMonthMap[fuHuaQiUscc]);
let scoreList = await scoreData.findScoreDataByParam({});
let timeMs = 0;
if (isSubmit) timeMs = submitTime;
else {
timeMs = new Date(`${year}-${month+1}-1 00:00:0${type}`).valueOf();
}
if (!taskScoreMap[fuHuaQiUscc]) taskScoreMap[fuHuaQiUscc] = 0;
taskScoreMap[fuHuaQiUscc] += addScore;
}
for (let uscc in taskScoreMap) {
let item = await scoreData.findFuHuaQiScoreInfo(uscc);
item.taskScore = taskScoreMap[uscc];
await item.save();
}
for (let i = 0; i < scoreList.length; i++) {
let {uscc} = scoreList[i];
console.log("任务分数修复成功");
}
export async function correctFuHuaQiMyEnterpriseScoreData() {
let data = await findFuHuaQiList({});
let sortDataInfo = await scoreData.findFuHuaQiScoreInfo(uscc);
sortDataInfo.myDataScore = sortDataInfo.myDataScore;
sortDataInfo.baseDataScore = sortDataInfo.baseDataScore;
sortDataInfo.myEnterpriseScore = sortDataInfo.myEnterpriseScore;
sortDataInfo.taskScore = sortDataInfo.taskScore;
sortDataInfo.updateTime = sortDataInfo.updateTime;
sortDataInfo.lastScore = sortDataInfo.lastScore;
await sortDataInfo.save();
for (let i = 0; i < data.length; i++) {
let info = data[i];
await scoreBiz.updateScore(info.uscc, SCOREWAYS.我的企业数据, false);
}
console.log("完成全部分数数据修复");
//todo 写完了,调接口
console.log("我的企业分数修复成功");
}
\ No newline at end of file
......@@ -4,13 +4,14 @@
*/
import moment = require("moment");
import { FUHUASTATE, INDUSTRY, MOVEOUTTYPE } from "../../../../config/enum";
import { FUHUASTATE, INDUSTRY, MOVEOUTTYPE, STATEENUM, TASKTYPEENUM } from "../../../../config/enum";
import { ENTERPRISENODEENUM, FUHUAQINODEENUM, POINTTYPEENUM } from "../../../../config/pointConfig";
import { findEnterpriseCount, findEnterpriseList } from "../../../../data/enterprise/enterprise";
import { findMonthTableList } from "../../../../data/fuHuaQi/monthTask/monthTable";
import { getPointDataByParam } from "../../../point";
import { findBusinessDataByParam } from "../../../../data/fuHuaQi/quarterTask/businessData";
import { changeEnumValue } from "../../../../util/verificationEnum";
import { findTaskListByParam } from "../../../../data/fuHuaQi/monthTask/task";
/**
......@@ -43,9 +44,11 @@ export async function fuHuaQiOperateStats(uscc:string, year:number) {
czlbhqs.dataList.push(occupancyRate);
});
let zfqyqs = await getFuHuaQiOwnEnterpriseCountStats(uscc, year);
// let zfqyqs = await getFuHuaQiOwnEnterpriseCountStats(uscc, year);
let zfqyqs = await newGetFuHuaQiEnterpriseCountStats(uscc, year); //todo 测试代码
let byqyslbhqs = await getFuHuaQiOwnEnterpriseGraduateCountStats(uscc, year);
// let byqyslbhqs = await getFuHuaQiOwnEnterpriseGraduateCountStats(uscc, year);
let byqyslbhqs = await newGetFuHuaQiEnterpriseGraduateCountStats(uscc, year);//todo 测试代码
let enterpriseIndustryList = await getEnterpriseIndustry(uscc, year);
......@@ -130,8 +133,107 @@ async function getFuHuaQiOwnEnterpriseCountStats(uscc:string, year:number) {
return {xnData, stData, monthData}
}
// async function newGetFuHuaQiEnterpriseCountStats(uscc:string, year:number) {}
async function newGetFuHuaQiEnterpriseCountStats(uscc:string, year:number) {
let selectParam = {
state : {"$ne":FUHUASTATE.迁出},
fuHuaQiUscc: uscc,
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]//未提交的企业不能查看
};
let enterpriseTotal = await findEnterpriseCount(selectParam); //非迁出企业总数
let xuniSelectParam = {
state : FUHUASTATE.虚拟孵化,
fuHuaQiUscc : uscc,
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]//未提交的企业不能查看
};
let virtualEnterpriseNum = await findEnterpriseCount(xuniSelectParam); //虚拟孵化
let thisMonth = new Date().getMonth() + 1;
/**获取迁出企业 */
let outList = await findEnterpriseList({fuHuaQiUscc:uscc, state:FUHUASTATE.迁出 });
let inOrOutMap = {};
outList.forEach(info => {
let {moveOutTime} = info;
let month = new Date(moveOutTime).getMonth() + 1;
if (!inOrOutMap[month]) inOrOutMap[month] = {inNum:0, outNum:0};
inOrOutMap[month].outNum += 1;
});
/**获取入孵任务 */
let subTasklist = await findTaskListByParam({fuHuaQiUscc:uscc, isSubmit:true, type:TASKTYPEENUM.新注册或迁入企业登记, year});
subTasklist.forEach(info => {
let {submitCount, month} = info;
if (!inOrOutMap[month]) inOrOutMap[month] = {inNum:0, outNum:0};
inOrOutMap[month].inNum = submitCount || 0;
});
let dataList = [];
let lastNumber = enterpriseTotal;
for (let i = 12; i >=1; i--) {
let st = 0;
let xn = 0;
if (i>=thisMonth) {
continue;
dataList.push({ st, xn, month:i });
continue;
}
let {outNum, inNum} = inOrOutMap[i] || {outNum:0, inNum:0};
lastNumber = lastNumber + outNum - inNum;
if (lastNumber <= 0) lastNumber = 0;
dataList.push({
st:lastNumber,
month:i,
xn:i ==thisMonth-1 ? virtualEnterpriseNum : 0
});
}
dataList.sort( (a, b) => {return a.month - b.month})
let xnData = [];
let stData = [];
let monthData = [];
dataList.forEach(info => {
xnData.push(info.xn);
stData.push(info.st);
monthData.push(info.month);
});
return {xnData, stData, monthData};
}
async function newGetFuHuaQiEnterpriseGraduateCountStats(uscc:string, year:number) {
let thisMonth = new Date().getMonth() + 1;
/**获取迁出企业 */
let outList = await findEnterpriseList({fuHuaQiUscc:uscc, state:FUHUASTATE.迁出 });
let outMap = {};
outList.forEach(info => {
let {moveOutTime, moveOutType} = info;
let month = new Date(moveOutTime).getMonth() + 1;
if (!outMap[month]) outMap[month] = 0;
if (moveOutType == MOVEOUTTYPE.毕业迁出 ) outMap[month] += 1;
});
let dataList = [];
for (let i = 12; i >=1; i--) {
if (i>=thisMonth) continue;
dataList.push({
nby:0,
by:outMap[i] || 0,
month:i
});
}
dataList.sort( (a, b) => {return a.month - b.month});
let monthData = [];
let graduateData = [];
let nbyData = [];
dataList.forEach(info => {
nbyData.push(info.nby);
graduateData.push(info.by);
monthData.push(info.month);
});
return {monthData, graduateData, nbyData};
}
/**
* 毕业企业数量变化趋势
......
......@@ -9,6 +9,8 @@ import * as i18nRegisterData from "../../../../data/fuHuaQi/instituQualify/i18nR
import * as icrData from "../../../../data/fuHuaQi/instituQualify/icr";
import { findFinancingList } from "../../../../data/fuHuaQi/monthTask/financing";
import { findBusinessDataByParam } from "../../../../data/fuHuaQi/quarterTask/businessData";
import { findOneFuHuaQiMonthTaskData } from "../../../../data/fuHuaQi/monthTask/task";
import { TASKTYPEENUM } from "../../../../config/enum";
export async function getValueStats(uscc) {
const ThisYear = new Date().getFullYear();
......@@ -31,7 +33,7 @@ export async function getValueStats(uscc) {
{year:declarationYear, declarationQuarter:{"$gte":declarationQuarter+1}}
];
for (let i = 4; i >= (declarationQuarter+1); i--) {
let key = `${declarationYear}-Q${i}`;
let key = `${declarationYear-1}-Q${i}`;
queryDataMap[key] = {key, TP:0, member:0,index:4-i};
}
for (let i =1; i < (declarationQuarter+1); i++) {
......@@ -42,11 +44,20 @@ export async function getValueStats(uscc) {
let businessData = await findBusinessDataByParam(quarterTaskParam);
businessData.forEach(info => {
let {quarter,year, TP} = info;
queryDataMap[`${year}-Q${quarter}`].TP = TP;
let {quarter,year, TP, draftLock} = info;
queryDataMap[`${year}-Q${quarter}`].TP = draftLock ? TP : '未填报';
});
let teamData = await findTeamDataByParams(quarterTaskParam);
//获取未填报
let notSubmitMap = {};
teamData.forEach(info => {
let {year, quarter, isSubmit, fhqIsSubmit} = info;
if (!notSubmitMap[`${year}-Q${quarter}`]) notSubmitMap[`${year}-Q${quarter}`] = -1;
if ((isSubmit == true || fhqIsSubmit == true) && notSubmitMap[`${year}-Q${quarter}`] == -1 ) {
notSubmitMap[`${year}-Q${quarter}`] = 1;
}
});
teamData.forEach(info => {
let { year, quarter } = info;
let quarterDataCount = 0;
......@@ -65,7 +76,8 @@ export async function getValueStats(uscc) {
quaryDataRank.forEach((info:any) => {
queryList.push(info.key);
tpList.push( info.TP );
jyrsqsList.push( info.member );
if (notSubmitMap[info.key] == -1) jyrsqsList.push( '未填报' );
else jyrsqsList.push( info.member );
});
/**融资企业数量趋势 */
......@@ -75,28 +87,33 @@ export async function getValueStats(uscc) {
let financingMap = {};//结构 {"YYYY-MM":{distinctKey:0,} }
for (let i = 1; i <= 6; i++) {
let key = moment().subtract(i, 'months').format("YYYY-MM");
let itemDate = moment().subtract(i, 'months');
let key = itemDate.format("YYYY-MM");
let selectMonth = itemDate.month();
let selectYear = itemDate.year();
let {isSubmit} = await findOneFuHuaQiMonthTaskData({fuHuaQiUscc:uscc, type:TASKTYPEENUM.融资企业填报,month:selectMonth, year:selectYear});
let ms = moment().subtract(i, 'months').valueOf();
financingMap[key]={ms, key, data:{}};
financingMap[key]={ms, key, data:{}, fuHuaQiSubmit:isSubmit==true};
}
financingData.forEach(info => {
let { uscc, investmentInstitutionsName, timeToObtainInvestment } = info;
let { uscc, investmentInstitutionsName, timeToObtainInvestment, draftLock } = info;
let distinctKey = uscc + investmentInstitutionsName + timeToObtainInvestment;
let month = moment(timeToObtainInvestment).format("YYYY-MM");
if (!financingMap[month]) console.log("数据异常 不符合范围之内的值 检查点1001");
financingMap[month].data[distinctKey] = 1;
if (financingMap[month]) financingMap[month].data[distinctKey] = 1;
});
let financingRankList = Object.values(financingMap).sort((a:any, b:any) => {return a.ms - b.ms});
let rzqyslqs = [];
financingRankList.forEach((info:any) => {
let {data, ms, key} = info;
let count = Object.keys(data || {}).length;
let {data, ms, key, fuHuaQiSubmit} = info;
let count = fuHuaQiSubmit ? Object.keys(data || {}).length : "未填报";
rzqyslqs.push({
month:key,
count
});
});
//识别 rzqyslqs 中的未填报数据
return { jyrsqs:{jyrsqsList, queryList}, i18nCount, icrCount, rzqyslqs, tpInfo:{tpList, queryList} };
}
......
......@@ -9,32 +9,54 @@ import { ERRORENUM } from "../../config/errorEnum";
import { findGuanWeiHuiUserInfoByLoginId } from "../../data/guanWeiHui/guanweihui";
import { BizError } from "../../util/bizError";
import { getPwdMd5, getToken } from "../../tools/system";
import { findFuHuaQiByUSCC } from "../../data/fuHuaQi/fuhuaqi";
const md5 = require("md5");
/**
* 登录
* 4.0版本更新:加入孵化器角色登录
* @param loginId 信用代码
* @param pwd 密码
* @returns resultUserInfo:{uscc, name} 登录后的信息
*/
export async function login(loginId:string, pwd:string) {
let userInfo = await findGuanWeiHuiUserInfoByLoginId(loginId);
if(!userInfo) throw new BizError(ERRORENUM.账号不存在, loginId);
let userIsNull = false;
let isFuHuaQi = false;
if(!userInfo || !userInfo.loginId) {
userInfo = await findFuHuaQiByUSCC(loginId);
if (!userInfo || !userInfo.uscc) userIsNull = true;
isFuHuaQi = true;
pwd = md5(pwd);
}
if (userIsNull) throw new BizError(ERRORENUM.账号不存在, loginId);
let checkPwd = getPwdMd5(loginId, pwd);
if (userInfo.pwd != checkPwd) throw new BizError(ERRORENUM.密码错误);
const Token = getToken(loginId);
let token = getToken(loginId);
let resultUserInfo = {
loginId: userInfo.loginId,
loginId: "",
name: userInfo.name,
token:Token
token:"",
isFuHuaQi
};
userInfo.token = Token;
if (isFuHuaQi) {
//孵化器登录管理后台
token = token +'ad'
resultUserInfo.loginId = userInfo.uscc;
resultUserInfo.token = token;
userInfo.adminToken = token;
} else {
//管委会登录管理后台
resultUserInfo.loginId = userInfo.loginId;
resultUserInfo.token = token;
userInfo.token = token;
userInfo.tokenMs = new Date().valueOf();
}
await userInfo.save();
......
export enum TARGET {
孵化器数量= 1,
孵化器孵化领域分布,
企业融资数量,
行业领域分布,
企业融资金额,
融资最多企业金额和占比,
上市企业数量,
上市企业分布,
融资行业领域占比,
融资事件最多的领域,
孵化器具备投资功能的数量和占比,
孵化器投融资金额,
融资企业的融资轮次分布,
孵化器就业人数,
在孵企业就业人数,
国际一流人才与国内一流人才占比,
布局新模式孵化器占比,
布局海外孵化器基地数量,
国际化合作数量,
搭建专业技术平台的数量,
搭建专业技术平台的占比,
创投基金数量,
创业创新方向各类型占比,
在孵企业营收总金额,
在孵企业营收季度趋势,
在孵企业纳税金额,
在孵企业纳税季度趋势,
在孵企业研发投入金额,
在孵企业研发投入季度趋势,
在孵企业创新方向占比,
孵化器营收总金额,
孵化器营收季度趋势,
孵化器纳税金额,
孵化器纳税季度趋势,
企业资质占比,
企业专利占比,
创业导师数量,
创业导师专业分布,
创业导师领域分布,
企业总数
}
\ No newline at end of file
/**
* ai聊天模块
*/
const request = require('request')
const AK = "SjRG4fWy8ByvLSmpBX3X7zyl"
const SK = "vA1jj6TbQoY4bXqzgZBEewNoi1eZAFoS"
/**
* 使用 AK,SK 生成鉴权签名(Access Token)
* @return string 鉴权签名信息(Access Token)
*/
function getAccessToken() {
let options = {
'method': 'POST',
'url': 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + AK + '&client_secret=' + SK,
}
return new Promise((resolve, reject) => {
request(options, (error, response) => {
if (error) { reject(error) }
else { resolve(JSON.parse(response.body).access_token) }
})
})
}
export async function checkMsg(msg:string, preConditions?) {
if (!preConditions) preConditions = [];
let messages = [];
preConditions.forEach(str => {
messages.push({"role":"user", "content":str});
messages.push({"role":"assistant", "content":"好的"});
});
messages.push({"role":"user", "content":msg});
let access_token = await getAccessToken();
var options = {
'method': 'POST',
'url': 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token=' + access_token,
'headers': {
'Content-Type': 'application/json'
},
body: JSON.stringify({messages})
};
return new Promise((resolve, reject) => {
request(options, function (error, response) {
if (error) throw new Error(error);
if (error) {
reject(error);
}
else {
resolve(JSON.parse(response.body).result);
}
});
})
}
\ No newline at end of file
/**
* 数据指标池
*/
import { ENTERPRISETEAM, FUHUAINDUSTRY, FUHUASTATE, INDUSTRY, SPECIALITY, STATEENUM } from "../../config/enum";
import { FUHUAQINODEENUM } from "../../config/pointConfig";
import { findEnterpriseByUscc, findEnterpriseCount, statsEnterpriseCycxfx, statsEnterpriseIndustry, statsEnterpriseIntellectualPropertyInfo, statsEnterpriseQualification } from "../../data/enterprise/enterprise";
import { selectFinancingCountByParams, selectFinancingListByParams, statsEnterpriseFinancingAmount, statsEnterpriseFinancingMaxAmount, statsEnterpriseFinancingRounds, statsFinancingEnterprise } from "../../data/enterprise/financingInfo";
import { statsEnterpriseBusinessInfo, statsEnterpriseQuerterBusinessInfo } from "../../data/enterprise/quarterTask/businessdata";
import { statsEnterpriseNewTeamCount } from "../../data/enterprise/quarterTask/team";
import { findFuHuaQiList } from "../../data/fuHuaQi/fuhuaqi";
import { getI18nRegisterCountByParam } from "../../data/fuHuaQi/instituQualify/i18nRegister";
import * as startupTeacherData from "../../data/fuHuaQi/instituQualify/startupTeacher";
import { statsFHQBusiness, statsFHQQuerterBusinessInfo } from "../../data/fuHuaQi/quarterTask/businessData";
import { changeEnumValue } from "../../util/verificationEnum";
import { TARGET } from "./enum";
//企业经营数据
//
/**指标池缓存
* 格式 :{枚举值:数据结构 }
*/
let indicatiorPoolQuerery = {};
export function getIndicationValueStr(enumValue:number, unit?) {
let {type, value} = indicatiorPoolQuerery[enumValue];
let str = '';
if (type == "Number") {
str = `${value}`;
if (unit) str += unit;
}
else {
for (let key in value) {
if (unit) {
str += `、${key}${value[key]}${unit}`;
} else {
str += `、${key}:${value[key]}`;
}
}
str = str.replace("、","");
}
return str;
}
export function getIndicationValue(enumValue:number) {
let {type, value} = indicatiorPoolQuerery[enumValue];
return value
}
export function getIndicationRate(enumValue:number) {
let {type, value} = indicatiorPoolQuerery[enumValue];
let str = '';
let count = 0;
for (let key in value) {
count += value[key];
}
for (let key in value) {
str += `、${key}占比${Math.ceil(value[key]/count*10000)/100}%`
}
str = str.replace("、","");
return str;
}
/**
* 初始化指标池
*/
export async function initPool() {
let fuHuaQiList = await findFuHuaQiList({uscc:{"$ne":"123456789123456789"}});//刨去测试账号
const ThisYear = new Date().getFullYear();
/**---------------------- 孵化器指标 */
indicatiorPoolQuerery[TARGET.孵化器数量] = {type:'Number', value:fuHuaQiList.length};
indicatiorPoolQuerery[TARGET.孵化器孵化领域分布] = {type:'Map', value:{}};
indicatiorPoolQuerery[TARGET.国际一流人才与国内一流人才占比] = {type:'Map', value:{}};
indicatiorPoolQuerery[TARGET.布局新模式孵化器占比] = {type:'Map', value:{"新模式":0, "旧模式":0}};
let isProfessionalTechnologyCount = 0;
indicatiorPoolQuerery[TARGET.创投基金数量] = {type:"Number", value:0};
indicatiorPoolQuerery[TARGET.孵化器具备投资功能的数量和占比] = {type:"Number", value:0};
fuHuaQiList.forEach(info => {
let {industry, foundingTeam, foundingTeamType, operationModel, isProfessionalTechnology, isCreatePTP, isParticipateInPTP} = info;
/**孵化器孵化领域分布 */
industry.forEach(item => {
let industryStr = changeEnumValue(FUHUAINDUSTRY, item);
if (!indicatiorPoolQuerery[TARGET.孵化器孵化领域分布].value[industryStr]) {
indicatiorPoolQuerery[TARGET.孵化器孵化领域分布].value[industryStr] = 0;
}
indicatiorPoolQuerery[TARGET.孵化器孵化领域分布].value[industryStr] += 1;
});
/**国际一流人才与国内一流人才占比 */
let foundingTeamCount = foundingTeam.length;
if (foundingTeamCount) {
let foundingTeamTypeStr = changeEnumValue(ENTERPRISETEAM, foundingTeamType);
if (!indicatiorPoolQuerery[TARGET.国际一流人才与国内一流人才占比].value[foundingTeamTypeStr]) {
indicatiorPoolQuerery[TARGET.国际一流人才与国内一流人才占比].value[foundingTeamTypeStr] = 0;
}
indicatiorPoolQuerery[TARGET.国际一流人才与国内一流人才占比].value[foundingTeamTypeStr] += foundingTeamCount;
}
/**布局新模式孵化器占比 */
if (operationModel) {
indicatiorPoolQuerery[TARGET.布局新模式孵化器占比].value["新模式"] += 1;
} else {
indicatiorPoolQuerery[TARGET.布局新模式孵化器占比].value["旧模式"] += 1;
}
/**搭建专业技术平台的数量 */
if (isProfessionalTechnology) isProfessionalTechnologyCount += 1;
/**创投基金数量 */
if ( isCreatePTP == STATEENUM.) indicatiorPoolQuerery[TARGET.创投基金数量].value += 1;
/**孵化器具备投资功能的数量和占比 */
if ( isParticipateInPTP ) indicatiorPoolQuerery[TARGET.孵化器具备投资功能的数量和占比].value += 1;
});
/**专业技术平台 */
indicatiorPoolQuerery[TARGET.搭建专业技术平台的数量] = {type:"Number", value:isProfessionalTechnologyCount};
indicatiorPoolQuerery[TARGET.搭建专业技术平台的占比] = { type:"Number", value: 0};
if (isProfessionalTechnologyCount) {
indicatiorPoolQuerery[TARGET.搭建专业技术平台的占比].value = `${Math.ceil(isProfessionalTechnologyCount/fuHuaQiList.length*10000)/100}%`;
}
/**孵化器投融资金额 */
indicatiorPoolQuerery[TARGET.孵化器投融资金额] = {type:"Number", value:0};
let fuHuaQiFinancList = await selectFinancingListByParams({fuHuaQiInvestment:true});
fuHuaQiFinancList.forEach(info => {
let { fuHuaQiInvestmentAmount } = info;
indicatiorPoolQuerery[TARGET.孵化器投融资金额].value += fuHuaQiInvestmentAmount;
});
/**在孵企业就业人数 */
indicatiorPoolQuerery[TARGET.在孵企业就业人数] = {type:"Number", value:await statsEnterpriseNewTeamCount() };
/**孵化器经营情况 */
let fhqBusinessData = await statsFHQBusiness(ThisYear);
let fhqQuerterBusiness = await statsFHQQuerterBusinessInfo(ThisYear);
let misAndRRMap = {};
for (let key in fhqQuerterBusiness.MISMap) {
misAndRRMap[key] = fhqQuerterBusiness.MISMap[key] + fhqQuerterBusiness.RRMap[key];
}
indicatiorPoolQuerery[TARGET.孵化器营收总金额] = {type:"Number", value:fhqBusinessData.MIS + fhqBusinessData.RR };
indicatiorPoolQuerery[TARGET.孵化器营收季度趋势] = {type:"Map", value:misAndRRMap};
indicatiorPoolQuerery[TARGET.孵化器纳税金额] = {type:"Number", value:fhqBusinessData.TP};
indicatiorPoolQuerery[TARGET.孵化器纳税季度趋势] = {type:"Map", value:fhqQuerterBusiness.TPMap};
/**国际化合作 */
indicatiorPoolQuerery[TARGET.国际化合作数量] = {type:"Number", value:await getI18nRegisterCountByParam({})};
/**创业导师 */
let teacherList = await startupTeacherData.findListDataByParam({});
let teacherTypeMap = {};
teacherList.forEach(info => {
let { speciality } = info;
speciality.forEach(item => {
let specialityStr = changeEnumValue(SPECIALITY, item);
if (!teacherTypeMap[specialityStr]) teacherTypeMap[specialityStr] = 0;
teacherTypeMap[specialityStr] += 1;
});
});
indicatiorPoolQuerery[TARGET.创业导师数量] = {type:"Number", value:teacherList.length};
indicatiorPoolQuerery[TARGET.创业导师专业分布] = {type:"Map", value:teacherTypeMap};
/**---------------------- 企业指标 */
/**企业基础信息 */
indicatiorPoolQuerery[TARGET.企业总数] = {type:"Number", value:await findEnterpriseCount({}) }
indicatiorPoolQuerery[TARGET.行业领域分布] = {type:"Map", value:await statsEnterpriseIndustry() };
indicatiorPoolQuerery[TARGET.创业创新方向各类型占比] = {type:"Map", value:await statsEnterpriseCycxfx() };
/**企业融资相关 */
const FinancingAmout = await statsEnterpriseFinancingAmount();
indicatiorPoolQuerery[TARGET.企业融资数量] = {type:"Number", value:await selectFinancingCountByParams({}) };
indicatiorPoolQuerery[TARGET.企业融资金额] = {type:"Number", value:FinancingAmout};
const MaxFinancingAmout = await statsEnterpriseFinancingMaxAmount();
indicatiorPoolQuerery[TARGET.融资最多企业金额和占比] = {type:"Number", value:0};
if (MaxFinancingAmout) {
indicatiorPoolQuerery[TARGET.融资最多企业金额和占比].value = `${Math.ceil(MaxFinancingAmout/FinancingAmout*10000)/100}%`;
}
indicatiorPoolQuerery[TARGET.融资企业的融资轮次分布] = {type:"Map", value:await statsEnterpriseFinancingRounds() };
let {industryAmountMap, industryCountInfo} = await enterpriseFinancingIndustry();
indicatiorPoolQuerery[TARGET.融资行业领域占比] = {type:"Map", value:industryAmountMap};
indicatiorPoolQuerery[TARGET.融资事件最多的领域] = {type:"Map", value:industryCountInfo};
/**企业上市情况 */
const BeOnTheMarketCount = await findEnterpriseCount({
state:{"$ne":FUHUASTATE.迁出},
"qualification.isBeOnTheMarket":true,
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}],
});
indicatiorPoolQuerery[TARGET.上市企业数量] = {type:"Number", value:BeOnTheMarketCount};
/**经营情况 */
let enterpriseBusinessInfo = await statsEnterpriseBusinessInfo(ThisYear);
let enterpriseQuerterBusinessInfo = await statsEnterpriseQuerterBusinessInfo(ThisYear);
indicatiorPoolQuerery[TARGET.在孵企业营收总金额] = {type:"Number", value:enterpriseBusinessInfo.BI};
indicatiorPoolQuerery[TARGET.在孵企业营收季度趋势] = {type:"Map", value:enterpriseQuerterBusinessInfo.biMap};
indicatiorPoolQuerery[TARGET.在孵企业纳税金额] = {type:"Number", value:enterpriseBusinessInfo.TXP};
indicatiorPoolQuerery[TARGET.在孵企业纳税季度趋势] = {type:"Map", value:enterpriseQuerterBusinessInfo.txpMap};
indicatiorPoolQuerery[TARGET.在孵企业研发投入金额] ={type:"Number", value:enterpriseBusinessInfo.RD};
indicatiorPoolQuerery[TARGET.在孵企业研发投入季度趋势] = {type:"Map", value:enterpriseQuerterBusinessInfo.rdMap};
/**企业资质 */
let enterpriseQualificationInfo:any = await statsEnterpriseQualification();
indicatiorPoolQuerery[TARGET.企业资质占比] = {type:"Map", value:{
"高新技术企业":enterpriseQualificationInfo.isHighTechMap,
"专精特新企业":enterpriseQualificationInfo.isZjtxMap,
"小巨人培育企业":enterpriseQualificationInfo.isXjrpyMap,
"小巨人企业":enterpriseQualificationInfo.isXjrMap
}};
let enterpriseIntellectualInfo = await statsEnterpriseIntellectualPropertyInfo();
indicatiorPoolQuerery[TARGET.企业专利占比] = {type:"Map", value:enterpriseIntellectualInfo};
console.log("指标库更新完成");
}
/**
* 企业融资领域数据统计
* @returns
*/
async function enterpriseFinancingIndustry() {
let enterpriseList = await statsFinancingEnterprise();
let industryAmountMap = {};
let industryCountMap = {};
for (let i = 0; i < enterpriseList.length; i++) {
let {uscc, count} = enterpriseList[i];
let {industry} = await findEnterpriseByUscc(uscc);
if (industry) {
industry.forEach(item => {
let str = changeEnumValue( INDUSTRY, item);
if (!industryAmountMap[str]) industryAmountMap[str] = 0;
industryAmountMap[str] += count;
if (!industryCountMap[str]) industryCountMap[str] = 0;
industryCountMap[str] += 1;
})
}
}
let max = 0;
let maxCountIndustry = "";
for (let str in industryCountMap) {
let count = industryCountMap[str];
if (count > max) {
maxCountIndustry = str;
max = count;
}
}
return {industryAmountMap, industryCountInfo:{"领域":maxCountIndustry, "次数":max} };
}
/**
* 用于报告生成
*/
import { ERRORENUM } from "../../config/errorEnum";
import { findFuHuaQiList } from "../../data/fuHuaQi/fuhuaqi";
import { BizError } from "../../util/bizError";
import { TARGET } from "./enum";
import { checkMsg } from "./gpt";
import { getIndicationRate, getIndicationValueStr, getIndicationValue } from "./indicatorPool";
const officegen = require('officegen');
const fs = require('fs');
const path = require('path');
/**提问大纲 */
let outline = [];
export async function initOutline() {
outline = [
{ title:'概述', msg:"写一段话,概述孵化器的作用与意义来表达孵化器的重要性", removeParagraph:true },
{ title:'孵化器分析', msg:"请根据已知条件,从经济学的角度分析孵化器的运行情况,要求2000个字。", context:[fuHuaQiCombinationMessage()]},
{ title:'企业分析', msg:"请根据已知条件,从经济学的角度分析企业的运行情况, 要求2000个字。", context:[enterpriseCombinationMessage()]},
{ title:'改进与规划', msg:"请根据已知条件,从经济学的角度提出孵化器的不足和改进方向。", context:[fuHuaQiCombinationMessage(), enterpriseCombinationMessage()]}
];
}
/**
* 生成报告
* @param token
*/
export async function generateReport() {
return {fileName:"2023年采集数据分析.docx", size:'17kb', url:'/doc/2023年采集数据分析.docx'};
let docx = officegen('docx');
let pObj = docx.createP();
/**绑定事件 */
docx.on('finalize', function(written) {
console.log(
'报告已生成'
)
});
docx.on('error', function(err) {
console.log(err)
});
/**生成大标题 */
pObj.addText(`${new Date().getFullYear()}孵化器运行分析报告\n`,{ font_size:18, bold:true });
let index = 1;
for (let key in outline) {
let {title, msg, context, removeParagraph} = outline[key];
/**组合小标题 */
pObj.addText(`${index}${title}\n`, { font_size:16, bold:true });
context = context || [];
let chartStr:any = await checkMsg(msg, context);
if (removeParagraph) {
let rmvList = chartStr.split('\n');
let rmvStr = ``;
rmvList.forEach(itemStr => {rmvStr += itemStr});
chartStr = rmvStr;
}
pObj.addText(' '+chartStr+`\n`, { font_size:14 });
index ++;
}
let out = fs.createWriteStream( path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", 'test.docx' ));
docx.generate(out);
return {isSuccess:true};
}
export async function zjAiChart(token:string) {
let str = fuHuaQiCombinationMessage();
let enterpriseStr = enterpriseCombinationMessage();
let preConditions = [];
preConditions.push(str);
preConditions.push(enterpriseStr);
let resultMsg:any = await checkMsg(token, preConditions);
return {message:resultMsg};
}
export async function aiChart(token:string) {
if (!token) throw new BizError(ERRORENUM.请输入聊天内容);
let resultMsg:any = await checkMsg(token, []);
return {message:resultMsg};
}
/**
* 组合数据前置条件
* 孵化器
*/
function fuHuaQiCombinationMessage() {
const Unit = "家";
let fhqCount = getIndicationValueStr(TARGET.孵化器数量, Unit);
let str = `已知:上海张江共计${fhqCount}孵化器,`;
str += `其中${getIndicationValueStr(TARGET.孵化器孵化领域分布, Unit)}${fhqCount}孵化器中${getIndicationRate(TARGET.布局新模式孵化器占比)}。`;
str += `共计${getIndicationValueStr(TARGET.创投基金数量, Unit)}孵化器成立创投基金。`;
let rate = Math.ceil(getIndicationValue(TARGET.孵化器具备投资功能的数量和占比)/getIndicationValue(TARGET.孵化器数量)*10000)/100;
str +=`${getIndicationValueStr(TARGET.孵化器具备投资功能的数量和占比, Unit)}孵化器具备投资功能,占比${rate}%,共计投融资${getIndicationValueStr(TARGET.孵化器投融资金额, "万元")}。`
str +=`${getIndicationValueStr(TARGET.搭建专业技术平台的数量, Unit)}孵化器搭建专业技术平台,占比${getIndicationValueStr(TARGET.搭建专业技术平台的占比)}。`;
str += `${fhqCount}家孵化器中,共有${getIndicationValue(TARGET.国际化合作数量)}个国际化合作。`;
str += `${getIndicationValue(TARGET.创业导师数量)}个创业导师,在这${getIndicationValue(TARGET.创业导师数量)}个创业导师中,${getIndicationValueStr(TARGET.创业导师专业分布, "个")}。`
str += `所有孵化器从业人员中:${getIndicationRate(TARGET.国际一流人才与国内一流人才占比)}。`;
str +=`本年度孵化器总营收${getIndicationValue(TARGET.孵化器营收总金额)}元,其中${getIndicationValueStr(TARGET.孵化器营收季度趋势, "元")}。`;
str +=`本年度孵化器纳税共计${getIndicationValue(TARGET.孵化器纳税金额)}元,其中${getIndicationValueStr(TARGET.孵化器纳税季度趋势, "元")}。`;
return str;
}
function enterpriseCombinationMessage() {
let str = `已知:孵化器已采集的${getIndicationValue(TARGET.企业总数)}家企业数据情况如下,行业领域分布:${getIndicationRate(TARGET.行业领域分布)}。`;
str += `创业创新方向各类型分布:${getIndicationRate(TARGET.创业创新方向各类型占比)}。`;
str += `在统计范围之内共有${getIndicationValueStr(TARGET.企业融资数量, '次')}融资行为,共计融资${getIndicationValueStr(TARGET.企业融资金额, '万元')},`;
str += `其中融资轮次分布情况:${getIndicationRate(TARGET.融资企业的融资轮次分布)},`;
let maxIn = getIndicationValue(TARGET.融资事件最多的领域);
str += `融资行业领域占比${getIndicationRate(TARGET.融资行业领域占比)},其中${maxIn["领域"]}领域融资事件最多,有${maxIn["次数"]}次。`;
str += `其中融资最多企业金额和占比${getIndicationValue(TARGET.融资最多企业金额和占比)}。`;
str += `在统计范围内共有上市企业${getIndicationValue(TARGET.上市企业数量)}家。`;
str += `在统计范围内在孵企业的营收总额${getIndicationValue(TARGET.在孵企业营收总金额)}元,其中${getIndicationValueStr(TARGET.在孵企业营收季度趋势, "元")},`;
str += `在孵企业纳税总额${getIndicationValue(TARGET.在孵企业纳税金额)}元,其中${getIndicationValueStr(TARGET.在孵企业纳税季度趋势, "元")},`;
str += `在孵企业纳税总额${getIndicationValue(TARGET.在孵企业研发投入金额)}元,其中${getIndicationValueStr(TARGET.在孵企业研发投入季度趋势, "元")}。`;
str += `在统计范围内企业资质情况${getIndicationRate(TARGET.企业资质占比)}。`;
str += `在统计范围内企业专利情况${getIndicationRate(TARGET.企业专利占比)}。`;
return str;
}
......@@ -17,7 +17,7 @@ import { eccEnumValue } from "../../../util/verificationEnum";
import { eccFormParam } from "../../../util/verificationParam";
import { findBusinessDataByYear } from "../../../data/enterprise/quarterTask/businessdata";
import { findReplenishBusinessDataByYear } from "../../../data/enterprise/replenish";
import { addPoint } from "../../point";
import { addEnterprisePoint } from "../../point";
import { ENTERPRISENODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
......@@ -113,8 +113,8 @@ export async function updateEnterpriseBaseInfo(uscc:string, param) {
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.基本信息_经营地址, enterpriseInfo.operatingAddress, param.operatingAddress, enterpriseInfo.fuHuaQiUscc);
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.基本信息_行业领域, enterpriseInfo.industry, param.industry, enterpriseInfo.fuHuaQiUscc);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.基本信息_经营地址, enterpriseInfo.operatingAddress, param.operatingAddress, enterpriseInfo.fuHuaQiUscc);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.基本信息_行业领域, enterpriseInfo.industry, param.industry, enterpriseInfo.fuHuaQiUscc);
/**修改字段 */
let changeList = checkChange(param, enterpriseInfo);
if ( !changeList.length ) throw new BizError(ERRORENUM.数据无更新, `${param.uscc}数据无更新`);
......
......@@ -15,7 +15,7 @@ import { BizError } from "../../../util/bizError";
import { checkChange, extractData } from "../../../util/piecemeal";
import { eccEnumValue } from "../../../util/verificationEnum";
import { eccFormParam } from "../../../util/verificationParam";
import { addPoint } from "../../point";
import { addEnterprisePoint } from "../../point";
/**
* 修改创始团队信息
......@@ -90,7 +90,7 @@ export async function updateInitialTeamInfo(uscc:string, firstClassTalent:number
/**添加埋点 */
let oldPointData = {haveFirstClassTalent:oldHaveFirstClassTalent, teams:enterpriseInitialTeamList || [] };
let newPointData = {haveFirstClassTalent:firstClassTalent, teams};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.创始团队, oldPointData, newPointData);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.创始团队, oldPointData, newPointData);
return {isSuccess:true};
}
......
......@@ -5,7 +5,7 @@
import { ENTERPRISENODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
import * as enterpriseData from "../../../data/enterprise/enterprise";
import { addPoint } from "../../point";
import { addEnterprisePoint } from "../../point";
/**
* 校验参数是否为空
......@@ -37,13 +37,13 @@ export async function updateIntellectualProperty(uscc:string, alienPatent:number
let enterpriseInfo = await enterpriseData.findEnterpriseByUscc(uscc);
if (enterpriseInfo.alienPatent != alienPatent) {
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.知识产权_海外专利, enterpriseInfo.alienPatent || 0, alienPatent);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.知识产权_海外专利, enterpriseInfo.alienPatent || 0, alienPatent);
}
if (enterpriseInfo.classIPatent != classIPatent) {
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.知识产权_一类专利, enterpriseInfo.classIPatent || 0, classIPatent);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.知识产权_一类专利, enterpriseInfo.classIPatent || 0, classIPatent);
}
if (enterpriseInfo.secondClassPatent != secondClassPatent) {
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.知识产权_二类专利, enterpriseInfo.secondClassPatent || 0, secondClassPatent);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.知识产权_二类专利, enterpriseInfo.secondClassPatent || 0, secondClassPatent);
}
enterpriseInfo.intellectualProperty = {alienPatent, classIPatent, secondClassPatent};
......
......@@ -10,7 +10,7 @@ import { BizError } from "../../../util/bizError";
import { eccEnumValue } from "../../../util/verificationEnum";
import { eccFormParam } from "../../../util/verificationParam";
import * as enterpriseData from "../../../data/enterprise/enterprise";
import { addPoint } from "../../point";
import { addEnterprisePoint } from "../../point";
import { ENTERPRISENODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
......@@ -60,19 +60,19 @@ export async function updateQualification(uscc:string, param) {
let oldHighTechData = {highTechMs:oldQualification.highTechMs, isHighTech:oldQualification.isHighTech};
let newHighTechData = {highTechMs:param.highTechMs, isHighTech:param.isHighTech};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.企业资质_高新技术,oldHighTechData, newHighTechData );
addEnterprisePoint( uscc, ENTERPRISENODEENUM.企业资质_高新技术,oldHighTechData, newHighTechData );
let oldIsZjtxData = {isZjtx:oldQualification.isZjtx, zjtxMs:oldQualification.zjtxMs};
let newIsZjtxData = {isZjtx:param.isZjtx, zjtxMs:param.zjtxMs};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.企业资质_专精特新,oldIsZjtxData, newIsZjtxData );
addEnterprisePoint( uscc, ENTERPRISENODEENUM.企业资质_专精特新,oldIsZjtxData, newIsZjtxData );
let oldIsXjrpyData = {isXjrpy:oldQualification.isXjrpy, xjrpyMs:oldQualification.xjrpyMs};
let newIsXjrpyData = {isXjrpy:param.isXjrpy, xjrpyMs:param.xjrpyMs};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.企业资质_小巨人培育,oldIsXjrpyData, newIsXjrpyData );
addEnterprisePoint( uscc, ENTERPRISENODEENUM.企业资质_小巨人培育,oldIsXjrpyData, newIsXjrpyData );
let oldIsXjrData = {isXjr:oldQualification.isXjr, xjrMs:oldQualification.xjrMs};
let newIsXjrData = {isXjr:param.isXjr, xjrMs:param.xjrMs};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.企业资质_小巨人,oldIsXjrData, newIsXjrData );
addEnterprisePoint( uscc, ENTERPRISENODEENUM.企业资质_小巨人,oldIsXjrData, newIsXjrData );
let oldMarketData = {
beOnTheMarket:oldQualification.beOnTheMarket ? JSON.stringify(oldQualification.beOnTheMarket) : '[]',
......@@ -82,7 +82,7 @@ export async function updateQualification(uscc:string, param) {
beOnTheMarket:param.beOnTheMarket ? JSON.stringify(param.beOnTheMarket) : '[]',
isBeOnTheMarket:param.isBeOnTheMarket
};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.企业资质_上市情况,oldMarketData, newMarketData );
addEnterprisePoint(uscc, ENTERPRISENODEENUM.企业资质_上市情况,oldMarketData, newMarketData );
enterpriseInfo.qualification = JSON.parse(JSON.stringify(param) );
......
......@@ -4,7 +4,7 @@
import moment = require("moment");
import * as informationDat from "../../data/guanWeiHui/information";
import { addPoint } from "../point";
import { addEnterprisePoint } from "../point";
import { ENTERPRISENODEENUM, POINTTYPEENUM } from "../../config/pointConfig";
......@@ -84,7 +84,7 @@ export async function getOnceinformation(uscc:string, id:string) {
createTime:moment(dateBaseData.createTimeMs).format("MM/DD")
};
addPoint(POINTTYPEENUM.企业, uscc, ENTERPRISENODEENUM.政策速递, id);
addEnterprisePoint( uscc, ENTERPRISENODEENUM.政策速递, id);
return {infomation:reuslt};
}
......
......@@ -10,7 +10,7 @@ import { findBusinessDataByUsccAndYear } from "../../../data/enterprise/quarterT
import { eccEnumValue } from "../../../util/verificationEnum";
import { BUSINESSDATATYPE } from "../../../config/enum";
import * as replenishData from "../../../data/enterprise/replenish";
import { addPoint } from "../../point";
import { addEnterprisePoint } from "../../point";
import { ENTERPRISENODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
......@@ -148,7 +148,7 @@ export async function replenishBusinessData(uscc:string, type:number, data) {
if (type == BUSINESSDATATYPE.研发投入) pointId = ENTERPRISENODEENUM.经营数据补录_研发投入;
if (type == BUSINESSDATATYPE.纳税) pointId = ENTERPRISENODEENUM.经营数据补录_纳税;
if (type == BUSINESSDATATYPE.营业收入) pointId = ENTERPRISENODEENUM.经营数据补录_营业收入;
addPoint(POINTTYPEENUM.企业, uscc, pointId, checkMap);
addEnterprisePoint( uscc, pointId, checkMap);
}
return {isSuccess:true};
......
......@@ -114,6 +114,7 @@ export async function moveInEnterprise(uscc:string, param) {
dataBaseInfo.moveOutCause = [];
dataBaseInfo.taskId = TaskId;
dataBaseInfo.moveOutTime = 0;
dataBaseInfo.draftLock = false;
for (let key in eccFormParamConfig.MoveInEnterpriseParamConfig) {
dataBaseInfo[key] = param[key];
}
......
......@@ -15,7 +15,7 @@ import * as verificationEnumTools from "../../../util/verificationEnum";
import { checkChange, extractData } from "../../../util/piecemeal";
import * as scoreBiz from "../fuHuaQi/score";
import { FUHUAQINODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
import { addPoint } from "../../point";
import { addFuHuaQiPoint } from "../../point";
import moment = require("moment");
import { findEnterpriseNewTeamData } from "../../../data/enterprise/quarterTask/team";
import { EnterpriseTeamConfig } from "../../../config/splitResultConfig";
......@@ -114,8 +114,7 @@ export async function updatePhysicalInfo(fuHuaQiUscc:string, uscc:string, leased
//兼容什么都没有修改的情况,这种情况不需要更改数据库和埋点
if (leasedArea != enterpriseInfo.leasedArea) {
/**埋点 */
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_占孵面积, enterpriseInfo.leasedArea || 0, leasedArea );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_占孵面积, enterpriseInfo.leasedArea || 0, leasedArea);
/**修改数据 */
enterpriseInfo.leasedArea = leasedArea;
}
......@@ -133,8 +132,7 @@ export async function updatePhysicalInfo(fuHuaQiUscc:string, uscc:string, leased
state: configEnum.FUHUASTATE.实体孵化,
virtualCause : null,//虚拟孵化模式
};
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData);
/**修改数据 */
enterpriseInfo.leasedArea = leasedArea;
enterpriseInfo.state = configEnum.FUHUASTATE.实体孵化;
......@@ -155,7 +153,8 @@ export async function updatePhysicalInfo(fuHuaQiUscc:string, uscc:string, leased
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
}
......@@ -205,7 +204,7 @@ export async function updateVirtualInfo(fuHuaQiUscc:string, uscc:string, virtual
leasedArea : 0,
state: configEnum.FUHUASTATE.虚拟孵化,
};
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData );
await enterpriseInfo.save();
......@@ -214,7 +213,7 @@ export async function updateVirtualInfo(fuHuaQiUscc:string, uscc:string, virtual
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
addFuHuaQiPoint( fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc});
return {isUsccess:true};
}
......@@ -290,7 +289,7 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu
graduation: await enterpriseData.findEnterpriseCount({ fuHuaQiUscc, graduation:true })
};
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData );
addFuHuaQiPoint( fuHuaQiUscc, FUHUAQINODEENUM.我的企业_孵化状态, oldData, newData );
await enterpriseInfo.save();
......@@ -298,7 +297,7 @@ export async function updateMoveOutInfo(fuHuaQiUscc:string, uscc:string, moveOu
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc});
return {isUsccess:true};
}
......@@ -354,7 +353,7 @@ export async function updateMyEnterpriseBaseInfo(fuHuaQiUscc:string, param) {
for (let key in param) {
oldPointInfo[key] = enterpriseInfo[key] || '';
}
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_基本信息, oldPointInfo, param );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_基本信息, oldPointInfo, param );
await enterpriseInfo.save();
......@@ -406,13 +405,13 @@ export async function replenishMyEnterpriseInPutInfo(fuHuaQiUscc:string, param)
await enterpriseData.replenishEnterpriseData(fuHuaQiUscc, param);
}
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新迁入' );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新迁入' );
/**企业状态改变埋点 */
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
addFuHuaQiPoint( fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc});
return {isSuccess:true};
}
......@@ -440,13 +439,13 @@ export async function replenishMyEnterpriseCreateInfo(fuHuaQiUscc:string, param)
await enterpriseData.replenishEnterpriseData(fuHuaQiUscc, param);
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新注册' );
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.我的企业_补录企业, param.uscc, '新注册' );
/**企业状态改变埋点 */
let xn = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.虚拟孵化, draftLock:true}) || 0; //虚拟孵化
let st = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.实体孵化, draftLock:true}) || 0; //实体孵化
let qc = await enterpriseData.findEnterpriseCount({fuHuaQiUscc, state:configEnum.FUHUASTATE.迁出, draftLock:true}) || 0; //迁出孵化
addPoint(POINTTYPEENUM.孵化器, fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc}, {});
addFuHuaQiPoint(fuHuaQiUscc, FUHUAQINODEENUM.企业状态变化, {xn, st, qc});
return {isSuccess:true};
}
......
......@@ -15,7 +15,7 @@ import { ERRORENUM } from "../../../config/errorEnum";
import { eccFormParam, eccReqParamater } from "../../../util/verificationParam";
import { changeEnumValue, eccEnumValue } from "../../../util/verificationEnum";
import * as scoreBiz from "./score";
import { addPoint } from "../../point";
import { addFuHuaQiPoint } from "../../point";
import { FUHUAQINODEENUM, POINTTYPEENUM } from "../../../config/pointConfig";
......@@ -145,17 +145,17 @@ export async function updateFuHuaQiBaseData(uscc:string, param) {
switch (key) {
case "acreageTotal":
if (param[key] != baseDataInfo[key]) {
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.我的数据_总面积, baseDataInfo[key], param[key] );
addFuHuaQiPoint(uscc, FUHUAQINODEENUM.我的数据_总面积, baseDataInfo[key], param[key] );
}
break;
case "acreagePersonalUse":
if (param[key] != baseDataInfo[key]) {
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.我的数据_自用面积, baseDataInfo[key], param[key] );
addFuHuaQiPoint(uscc, FUHUAQINODEENUM.我的数据_自用面积, baseDataInfo[key], param[key] );
}
break;
case "incubatedAcreage":
if (param[key] != baseDataInfo[key]) {
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.我的数据_在孵面积, baseDataInfo[key], param[key]);
addFuHuaQiPoint( uscc, FUHUAQINODEENUM.我的数据_在孵面积, baseDataInfo[key], param[key]);
}
break;
}
......@@ -167,7 +167,7 @@ export async function updateFuHuaQiBaseData(uscc:string, param) {
}
baseDataInfo["hatchingGround"] = param.hatchingGround;
if (JSON.stringify(param['hatchingGround'] || []) != JSON.stringify(baseDataInfo['hatchingGround'] || [])) {
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.我的数据_经备案孵化场地, baseDataInfo['hatchingGround'], param['hatchingGround'] );
addFuHuaQiPoint( uscc, FUHUAQINODEENUM.我的数据_经备案孵化场地, baseDataInfo['hatchingGround'], param['hatchingGround'] );
}
await baseDataInfo.save();
......
......@@ -10,7 +10,7 @@ import { getI18nRegisterId } from "../../../../tools/system";
import * as i18nRegisterData from "../../../../data/fuHuaQi/instituQualify/i18nRegister";
import { BizError } from "../../../../util/bizError";
import { ERRORENUM } from "../../../../config/errorEnum";
import { addPoint } from "../../../point";
import { addFuHuaQiPoint } from "../../../point";
import { FUHUAQINODEENUM, OPERATETYPEENUM, POINTTYPEENUM } from "../../../../config/pointConfig";
......@@ -27,9 +27,9 @@ export async function createI18nRegister(uscc:string, country:string, partners:s
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
let id = getI18nRegisterId(uscc);
await i18nRegisterData.addRegister(id, uscc, fuHuaQiInfo.name, country, partners, cMode, cAchievements);
await i18nRegisterData.addRegister(id, uscc, fuHuaQiInfo.operationName, country, partners, cMode, cAchievements);
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.机构资质_国际化登记, {country, partners, cMode, cAchievements}, null, OPERATETYPEENUM.添加 );
addFuHuaQiPoint(uscc, FUHUAQINODEENUM.机构资质_国际化登记, {country, partners, cMode, cAchievements}, null, OPERATETYPEENUM.添加 );
return {isSuccess:true};
}
......@@ -64,7 +64,7 @@ export async function updateI18nRegister(uscc:string, id:string, country:string,
await registerInfo.save();
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.机构资质_国际化登记, oldData, newData, OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, FUHUAQINODEENUM.机构资质_国际化登记, oldData, newData, OPERATETYPEENUM.修改 );
return {isSuccess:true};
}
......@@ -105,7 +105,7 @@ export async function deleteI18nRegisterInfo(uscc:string, id:string) {
cAchievements: registerInfo.cAchievements,
};
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.机构资质_国际化登记, oldData, null, OPERATETYPEENUM.删除 );
addFuHuaQiPoint( uscc, FUHUAQINODEENUM.机构资质_国际化登记, oldData, null, OPERATETYPEENUM.删除 );
await i18nRegisterData.deleteI18nRegisterListById(id);
......
......@@ -10,7 +10,7 @@ import * as icrData from "../../../../data/fuHuaQi/instituQualify/icr";
import { changeEnumValue } from "../../../../util/verificationEnum";
import { COOPERATIONMODE } from "../../../../config/enum";
import moment = require("moment");
import { addPoint } from "../../../point";
import { addFuHuaQiPoint } from "../../../point";
import * as pointConfig from "../../../../config/pointConfig";
import { BizError } from "../../../../util/bizError";
import { ERRORENUM } from "../../../../config/errorEnum";
......@@ -30,9 +30,9 @@ export async function createIcr(uscc:string, po:string, ce:string, cMode, startT
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
let id = getRandomId(uscc);
await icrData.addData(id, uscc, fuHuaQiInfo.name, po, ce, cMode, startTimeMs);
await icrData.addData(id, uscc, fuHuaQiInfo.operationName, po, ce, cMode, startTimeMs);
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, {po, ce, cMode, startTimeMs}, null, pointConfig.OPERATETYPEENUM.添加 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, {po, ce, cMode, startTimeMs}, null, pointConfig.OPERATETYPEENUM.添加 );
return {isSuccess:true};
}
......@@ -59,7 +59,7 @@ export async function updateIcr(uscc:string, id:string, po:string, ce:string, cM
startTimeMs : dataInfo.startTimeMs,
};
let newData = { po, ce, cMode, startTimeMs };
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
dataInfo.po = po;
dataInfo.ce = ce;
......@@ -111,7 +111,7 @@ export async function deleteIcr(uscc:string, id:string) {
await icrData.deleteDataById(id);
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_大学科研院所合作机构, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
return {isSuccess:true}
}
......
......@@ -9,7 +9,7 @@ import * as startupTeacherData from "../../../../data/fuHuaQi/instituQualify/sta
import * as zjBeyondLayoutData from "../../../../data/fuHuaQi/instituQualify/zjBeyondLayout";
import { STATEENUM } from "../../../../config/enum";
import * as fuhuaqiData from "../../../../data/fuHuaQi/fuhuaqi";
import { addPoint } from "../../../point";
import { addFuHuaQiPoint } from "../../../point";
import * as pointConfig from "../../../../config/pointConfig";
......@@ -34,7 +34,7 @@ export async function updatePTPInfo(uscc:string, isCreatePTP:number, scalePTP:nu
};
let newData = { isCreatePTP, scalePTP, isParticipateInPTP, participatingFundCompany };
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_创投基金登记, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_创投基金登记, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
fuHuaQiInfo.isCreatePTP = isCreatePTP;
fuHuaQiInfo.scalePTP = scalePTP;
......@@ -101,7 +101,7 @@ export async function updateProfessionalTechnology(uscc:string, isProfessionalTe
cooperationInstitutions,
};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_专业技术平台登记, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_专业技术平台登记, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
fuHuaQiInfo.isProfessionalTechnology= isProfessionalTechnology;//是否专业技术平台
fuHuaQiInfo.professionalTechnologyName= professionalTechnologyName;//专业技术平台名称
......
......@@ -8,7 +8,7 @@ import { getRandomId } from "../../../../tools/system";
import * as startupTeacherData from "../../../../data/fuHuaQi/instituQualify/startupTeacher";
import { changeEnumValue } from "../../../../util/verificationEnum";
import { SPECIALITY, TEACHERLV } from "../../../../config/enum";
import { addPoint } from "../../../point";
import { addFuHuaQiPoint } from "../../../point";
import * as pointConfig from "../../../../config/pointConfig";
import { BizError } from "../../../../util/bizError";
import { ERRORENUM } from "../../../../config/errorEnum";
......@@ -30,10 +30,10 @@ export async function createStartUpTeacher(uscc:string, teacherName:string, unit
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
let id = getRandomId(uscc);
await startupTeacherData.addData(id, uscc, fuHuaQiInfo.name, teacherName, unit, duties, speciality, teacherLv, serviceEnterprises);
await startupTeacherData.addData(id, uscc, fuHuaQiInfo.operationName, teacherName, unit, duties, speciality, teacherLv, serviceEnterprises);
let pointData = {teacherName, unit, duties, speciality, teacherLv, serviceEnterprises};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, pointData, null, pointConfig.OPERATETYPEENUM.添加 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, pointData, null, pointConfig.OPERATETYPEENUM.添加 );
return {isSuccess:true};
}
......@@ -64,7 +64,7 @@ export async function updateStartUpTeacher(uscc:string, id:string, teacherName:s
teacherLv:dataInfo.teacherLv,
serviceEnterprises:dataInfo.serviceEnterprises
};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
dataInfo.teacherName = teacherName;
dataInfo.unit = unit;
......@@ -117,7 +117,7 @@ export async function deleteStartUpTeacher(uscc:string, id:string) {
teacherLv:dataInfo.teacherLv,
serviceEnterprises:dataInfo.serviceEnterprises
};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_创业导师情况, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
await startupTeacherData.deleteDataById(id);
......
......@@ -9,7 +9,7 @@ import { getRandomId } from "../../../../tools/system";
import * as zjBeyondLayoutData from "../../../../data/fuHuaQi/instituQualify/zjBeyondLayout";
import { changeEnumValue } from "../../../../util/verificationEnum";
import { ZJBEYONDLAYOUTOPERATIONMODE } from "../../../../config/enum";
import { addPoint } from "../../../point";
import { addFuHuaQiPoint } from "../../../point";
import * as pointConfig from "../../../../config/pointConfig";
import { BizError } from "../../../../util/bizError";
import { ERRORENUM } from "../../../../config/errorEnum";
......@@ -27,10 +27,10 @@ export async function createZJBeyondLayout(uscc:string, city:string, area:number
let fuHuaQiInfo = await fuhuaqiData.findFuHuaQiByUSCC(uscc);
let id = getRandomId(uscc);
await zjBeyondLayoutData.addData(id, uscc, fuHuaQiInfo.name, city, area, operationMode);
await zjBeyondLayoutData.addData(id, uscc, fuHuaQiInfo.operationName, city, area, operationMode);
let pointData = {city, area, operationMode};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, pointData, null, pointConfig.OPERATETYPEENUM.添加 );
addFuHuaQiPoint(uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, pointData, null, pointConfig.OPERATETYPEENUM.添加 );
return {isSuccess:true};
}
......@@ -54,7 +54,7 @@ export async function updateZJBeyondLayout(uscc:string, id:string, city:string,
operationMode:dataInfo.operationMode,
};
let newData = {city, area, operationMode};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, oldData, newData, pointConfig.OPERATETYPEENUM.修改 );
dataInfo.city = city;
dataInfo.area = area;
......@@ -98,7 +98,7 @@ export async function deleteZJBeyondLayout(uscc:string, id:string) {
area:dataInfo.area,
operationMode:dataInfo.operationMode,
};
addPoint(pointConfig.POINTTYPEENUM.孵化器, uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
addFuHuaQiPoint( uscc, pointConfig.FUHUAQINODEENUM.机构资质_张江以外布局, oldData, null, pointConfig.OPERATETYPEENUM.删除 );
await zjBeyondLayoutData.deleteDataById(id);
......
......@@ -126,7 +126,7 @@ export async function updateScore(uscc:string, type:number, isSubmitTask:boolean
// newScore = -1 * newScore;
await scoreLogData.addLog(uscc, type, changeMode, newCountScore, newScore, subType);
} else {
await scoreLogData.addLog(uscc, type, changeMode, newCountScore, newScore);
await scoreLogData.addLog(uscc, type, changeMode, newCountScore, newScore-oldScore);
}
scoreInfo.updateTime = new Date().valueOf();
......@@ -162,7 +162,8 @@ function getOnceTaskDeductScore(month:number) {
* @returns 我的企业得分
*/
async function myEnterpriseScoreCount(uscc:string) {
let enterpriseList = await findEnterpriseList({fuHuaQiUscc:uscc, draftLock:true});
let startEnterpriseParam:any = {fuHuaQiUscc:uscc, "$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]};
let enterpriseList = await findEnterpriseList(startEnterpriseParam);
let isValueCount = 0;
let valueCount = 0;
......@@ -204,7 +205,11 @@ export async function fuHuaQiScoreLog(uscc:string, year:number) {
if ( !distinctMap[timeKey] ) distinctMap[timeKey] = [];
let itemWaysStr = waysStr(info.ways, info.taskType, info.changeMode);
itemWaysStr += `${Math.abs(info.addScore)}分`;
if (info.addScore > 1) {
itemWaysStr += `${Math.abs(Math.ceil(info.addScore))}分`;
} else {
itemWaysStr += `${Math.abs(Math.round(info.addScore*10)/10)}分`;
}
distinctMap[timeKey].push({
score:Math.ceil(info.score),
......
......@@ -5,7 +5,7 @@
import moment = require("moment");
import * as informationData from "../../data/guanWeiHui/information";
import { FUHUAQINODEENUM, POINTTYPEENUM } from "../../config/pointConfig";
import { addPoint } from "../point";
import { addFuHuaQiPoint } from "../point";
/**
......@@ -81,7 +81,7 @@ export async function getOnceinformation(uscc:string, id:string) {
createTime:moment(baseData.createTimeMs).format("MM/DD")
};
addPoint(POINTTYPEENUM.孵化器, uscc, FUHUAQINODEENUM.政策速递, id);
addFuHuaQiPoint(uscc, FUHUAQINODEENUM.政策速递, id);
return {infomation:reuslt};
}
......
......@@ -8,90 +8,66 @@ import { post } from "../util/request";
const Sign = "xxxx8901231kldosdjkfsdlk";
export async function addPoint(pointType:number, uid:string, pointId:number, p1, p2?, p3?) {
let url = 'http://localhost:7078/point/';
let pointInfo:any = {uid, ct:new Date().valueOf() };
if (pointType == POINTTYPEENUM.企业 ) {
url += "enterprise/add";
if (pointId != ENTERPRISENODEENUM.政策速递 && pointId != ENTERPRISENODEENUM.创始团队 ) {
pointInfo.pid = pointId;
}
/**组合埋点信息 */
if (pointId >= ENTERPRISENODEENUM.经营数据补录_营业收入 && pointId <= ENTERPRISENODEENUM.经营数据补录_纳税) {
/**经营数据不必保存旧值 */
pointInfo.p1 = JSON.stringify(p1);
post(url, {pointInfo, pointId}, {sign:Sign});
} else if (pointId == ENTERPRISENODEENUM.政策速递) {
pointInfo.p1 = p1;
post(url, {pointInfo, pointId}, {sign:Sign});
} else if (pointId == ENTERPRISENODEENUM.进入首页) {
post(url, {pointInfo, pointId}, {sign:Sign});
} else {
/**数组类型 or 对象类型 */
let oldData;
let newData;
if (typeof p1 == "object") {
oldData = JSON.stringify(p1);
newData = JSON.stringify(p2);
} else if (typeof p1 == "number") {
oldData = p1 + '';
newData = p2 + '';
} else {
oldData = p1;
newData = p2;
}
if (oldData != newData) {
pointInfo.p1 = oldData;
pointInfo.p2 = newData;
if (ENTERPRISENODEENUM.基本信息_经营地址 == pointId || ENTERPRISENODEENUM.基本信息_行业领域 == pointId) {
pointInfo.p3 = p3;
}
post(url, {pointInfo, pointId}, {sign:Sign});
}
/**
* 添加孵化器埋点
* @param uid
* @param pointId
* @param p1
* @param p2
* @param p3
*/
export async function addFuHuaQiPoint(uid:string, pointId:number, p1, p2?, p3?) {
let param:any = {pid:pointId, uid, ct:new Date().valueOf()};
if (p1 != null || p1 != undefined) {
if (typeof p1 == "object") param.p1 = JSON.stringify(p1);
else if (typeof p1 == "boolean" || typeof p1 == "number") param.p1 = p1.toString();
else if (typeof p1 == "string") param.p1 == p1;
}
} else {
/**孵化器埋点 */
url += "fuhuaqi/add";
if (pointId == FUHUAQINODEENUM.政策速递 ) {
pointInfo.p1 = p1;
post(url, {pointInfo, pointId}, {sign:Sign});
} else if (pointId == FUHUAQINODEENUM.进入首页) {
post(url, {pointInfo, pointId}, {sign:Sign});
} else {
pointInfo.pid = pointId;
let oldData;
let newData;
if (typeof p1 == "object") {
oldData = JSON.stringify(p1);
newData = JSON.stringify(p2);
} else if (typeof p1 == "number") {
oldData = p1 + '';
newData = p2 + '';
} else {
oldData = p1;
newData = p2;
if (p2 != null || p2 != undefined) {
if (typeof p2 == "object") param.p2 = JSON.stringify(p2);
else if (typeof p2 == "boolean" || typeof p2 == "number") param.p2 = p2.toString();
else if (typeof p2 == "string") param.p2 == p2;
}
/**机构资质要加类型埋点 */
if (pointId >= 2 || pointId<= 7) {
pointInfo.pt = p3;
if (p3 != null || p3 != undefined) {
if (typeof p3 == "object") param.p3 = JSON.stringify(p3);
else if (typeof p3 == "boolean" || typeof p3 == "number") param.p3 = p3.toString();
else if (typeof p3 == "string") param.p3 == p3;
}
post('http://localhost:7078/point/fuhuaqi/add', {pointInfo:param, pointId}, {sign:Sign});
}
if (oldData != newData) {
pointInfo.p1 = oldData;
pointInfo.p2 = newData;
post(url, {pointInfo, pointId}, {sign:Sign});
}
/**
* 添加企业埋点
* @param uid
* @param pointId
* @param p1
* @param p2
* @param p3
*/
export async function addEnterprisePoint(uid:string, pointId:number, p1, p2?, p3?) {
let param:any = {p1, pid:pointId, uid, ct:new Date().valueOf()};
if (p1 != null || p1 != undefined) {
if (typeof p1 == "object") param.p1 = JSON.stringify(p1);
else if (typeof p1 == "boolean" || typeof p1 == "number") param.p1 = p1.toString();
else if (typeof p1 == "string") param.p1 == p1;
}
if (p2 != null || p2 != undefined) {
if (typeof p2 == "object") param.p2 = JSON.stringify(p2);
else if (typeof p2 == "boolean" || typeof p2 == "number") param.p2 = p2.toString();
else if (typeof p2 == "string") param.p2 == p2;
}
if (p3 != null || p3 != undefined) {
if (typeof p3 == "object") param.p3 = JSON.stringify(p3);
else if (typeof p3 == "boolean" || typeof p3 == "number") param.p3 = p3.toString();
else if (typeof p3 == "string") param.p3 == p3;
}
post('http://localhost:7078/point/enterprise/add', {pointInfo:param, pointId}, {sign:Sign});
}
/**
* 获取埋点数据
* @param type 类型
......
......@@ -71,7 +71,8 @@ export enum ERRORENUM {
企业审批中请下个自然月登录,
缺少关键参数导致修改失败,
不合规操作,
未填安全手机号无法修改密码
未填安全手机号无法修改密码,
请输入聊天内容
}
export enum ERRORCODEENUM {
......
......@@ -26,21 +26,21 @@ export enum FUHUAQINODEENUM {
* 企业端埋点
*/
export enum ENTERPRISENODEENUM {
政策速递 = 1,
政策速递 = 101,
创始团队,
企业资质_高新技术,
企业资质_专精特新,
企业资质_小巨人培育 = 5,
企业资质_小巨人培育,
企业资质_小巨人,
企业资质_上市情况,
知识产权_海外专利,
知识产权_一类专利,
知识产权_二类专利 = 10,
知识产权_二类专利,
基本信息_行业领域,
基本信息_经营地址,
经营数据补录_营业收入,
经营数据补录_研发投入,
经营数据补录_纳税 = 15,
经营数据补录_纳税,
进入首页
}
......
......@@ -5,7 +5,8 @@
import {Schema} from 'mongoose';
import { baseDB } from '../../db/mongo/dbInit';
import { FUHUASTATE } from '../../config/enum';
import { CYCXFX, FUHUASTATE, INDUSTRY } from '../../config/enum';
import { changeEnumValue } from '../../util/verificationEnum';
/**
* 创始团队
......@@ -285,7 +286,12 @@ export async function findEnterpriseList(selectParam) {
* @returns number 数据数量
*/
export async function findEnterpriseInfoByName(name:string) {
return await enterpriseModel.findOne({name, draftLock:true});
let selectParam = {
state : {"$ne":FUHUASTATE.迁出},
name,
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
};
return await enterpriseModel.findOne(selectParam);
}
......@@ -298,7 +304,12 @@ export async function findEnterpriseInfoByName(name:string) {
* @returns []
*/
export async function findSubmittedEnterpriseListByFuHuaQiUscc(fuHuaQiUscc:string) {
return await enterpriseModel.find({fuHuaQiUscc, draftLock:true }, 'name logonAddress operatingAddress state');
let selectParam = {
state : {"$ne":FUHUASTATE.迁出},
fuHuaQiUscc,
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
};
return await enterpriseModel.find(selectParam, 'name logonAddress operatingAddress state');
}
......@@ -381,3 +392,107 @@ export async function statsFHQHaveEnterpriseCount() {
});
return map;
}
/**
* 统计非迁出企业的 行业领域
*/
export async function statsEnterpriseIndustry() {
let statsList = await enterpriseModel.aggregate([
{"$match":{
state:{"$ne":FUHUASTATE.迁出},
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
}},
{"$group":{
_id:"$industry",
count:{"$sum":1}
}}
]);
let distinctMap = {};
statsList.forEach(info => {
info._id.forEach(item => {
let itemStr = changeEnumValue(INDUSTRY, item);
if (!distinctMap[itemStr]) distinctMap[itemStr] = 0;
distinctMap[itemStr] += 1;
})
});
return distinctMap;
}
/**
* 统计非迁出企业的 创新创业
*/
export async function statsEnterpriseCycxfx() {
let statsList = await enterpriseModel.aggregate([
{"$match":{
state:{"$ne":FUHUASTATE.迁出},
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
}},
{"$group":{
_id:"$cycxfx",
count:{"$sum":1}
}}
]);
let distinctMap = {};
statsList.forEach(info => {
let {_id} = info;
if (!_id) return;
_id.forEach(item => {
let itemStr = changeEnumValue(CYCXFX, item);
if (!distinctMap[itemStr]) distinctMap[itemStr] = 0;
distinctMap[itemStr] += 1;
})
});
return distinctMap;
}
export async function statsEnterpriseQualification() {
let resultMap = {isHighTech:0, isZjtx:0, isXjrpy:0, isXjr:0 };
let keyList = ["isHighTech", "isZjtx", "isXjrpy", "isXjr"];
for (let i = 0; i < keyList.length; i++) {
let key = keyList[i];
let subList = await enterpriseModel.aggregate([
{"$match":{
state:{"$ne":4},
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
}},
{
"$group":{ _id:`$qualification.${key}`, count:{"$sum":1} }
},
{"$match":{
"_id":true
}}
]);
resultMap[key] = subList[0] ? subList[0].count : 0;
}
return resultMap;
}
export async function statsEnterpriseIntellectualPropertyInfo() {
let subList = await enterpriseModel.aggregate([
{"$match":{
state:{"$ne":4},
"$or":[{"$and":[{"draftLock":true}, {"taskId":{"$ne":null}}]}, {"$and":[{"draftLock":false}, {"taskId":null}]}]
}},
{
"$group":{
_id:"$null",
alienPatent:{"$sum":"$intellectualProperty.alienPatent"},
classIPatent:{"$sum":"$intellectualProperty.classIPatent"},
secondClassPatent:{"$sum":"$intellectualProperty.secondClassPatent"}
}
}
]);
let reuslt = subList[0];
if (!reuslt) return {"海外专利":0, "一类专利":0, "二类专利":0};
return {
"海外专利":reuslt.alienPatent,
"一类专利":reuslt.classIPatent,
"二类专利":reuslt.secondClassPatent
};
}
\ No newline at end of file
......@@ -5,6 +5,8 @@
import {Schema} from 'mongoose';
import { baseDB } from '../../db/mongo/dbInit';
import { changeEnumValue } from '../../util/verificationEnum';
import { FINANCINGROUNDS } from '../../config/enum';
const financingSchema = new Schema({
id:{type:String, index:true},//唯一标识
......@@ -163,3 +165,66 @@ export async function statsEnterpriseFinancingByTime(startTimeMs:number) {
return Object.values(dataMap);
}
/**
* 统计融资金额
* @returns
*/
export async function statsEnterpriseFinancingAmount() {
let statsList = await financingInfoModel.aggregate([
{"$group":{_id:"$financingRounds", count:{"$sum":"$financingAmount"}, dis:{"$sum":0}}},
{"$group":{_id:"$dis", count:{"$sum":"$count"}}}
]);
return statsList[0] ? statsList[0].count : 0;
}
/**
* 统计最大融资金额
* @returns
*/
export async function statsEnterpriseFinancingMaxAmount() {
let statsList = await financingInfoModel.aggregate([
{"$group":{_id:"$uscc", count:{"$sum":"$financingAmount"}, dis:{"$sum":0} }},
{"$sort":{"count":-1 }},
{"$group":{_id:"$dis", firstDoc:{"$first":"$$ROOT"} }}
]);
let statsInfo = statsList[0] ? statsList[0].firstDoc : {count:0};
return statsInfo.count;
}
/**
* 统计融资轮次
* @returns
*/
export async function statsEnterpriseFinancingRounds() {
let statsList = await financingInfoModel.aggregate([
{"$group":{_id:"$financingRounds", count:{"$sum":1}}}
]);
let map = {};
statsList.forEach(info => {
let {_id, count} = info;
let str = changeEnumValue(FINANCINGROUNDS, _id);
map[str] = count;
});
return map;
}
/**
* 统计融资企业
* @returns
*/
export async function statsFinancingEnterprise() {
let statsList = await financingInfoModel.aggregate([
{"$group":{_id:"$uscc", count:{"$sum":"$financingAmount"}} }
]);
let list = []
statsList.forEach(info => {
let {_id, count} = info;
list.push({uscc:_id, count});
});
return list;
}
\ No newline at end of file
......@@ -158,3 +158,43 @@ export async function statsBusinessCount(param) {
]);
return statsList;
}
/**
* 统计本年度企业经营情况
*/
export async function statsEnterpriseBusinessInfo(year:number) {
let list = await businessDataModel.aggregate([
{"$match":{year:2023, "$or":[{isSubmit:true}, {fhqIsSubmit:true}] }},
{"$group":{_id:"$year",
BI:{"$sum":"$BI"},
RD:{"$sum":"$RD"},
TXP:{"$sum":"$TXP"}
}}
]);
return list[0] || { BI:0, RD:0, TXP:0 };
}
export async function statsEnterpriseQuerterBusinessInfo(year:number) {
let list = await businessDataModel.aggregate([
{"$match":{year, "$or":[{isSubmit:true}, {fhqIsSubmit:true}] }},
{"$group":{_id:"$quarter",
BI:{"$sum":"$BI"},
RD:{"$sum":"$RD"},
TXP:{"$sum":"$TXP"}
}}
]);
let biMap = {};
let rdMap = {};
let txpMap = {};
list.forEach(info => {
let {_id, BI, RD, TXP} = info;
let str = `第${_id}季度`;
biMap[str] = BI;
rdMap[str] = RD;
txpMap[str] = TXP;
});
return { biMap, rdMap, txpMap };
}
\ No newline at end of file
......@@ -197,3 +197,31 @@ export async function statsEnterpriseTeamCountByNull(year:number, quarter:number
]);
return statsList;
}
export async function statsEnterpriseNewTeamCount() {
let list = await teamModel.aggregate([
{"$match":{"$or":[{isSubmit:true}, {fhqIsSubmit:true}]} },
{"$sort":{"year":-1, "quarter":-1}},
{"$group":{_id:"$uscc", firstDoc:{"$first":"$$ROOT"}, d:{"$sum":0}}},
{"$group":{
_id:"$d",
doctorCount:{"$sum":"$firstDoc.doctor"},
masterCount:{"$sum":"$firstDoc.master"},
undergraduateCount:{"$sum":"$firstDoc.undergraduate"},
juniorCollegeCount:{"$sum":"$firstDoc.juniorCollege"},
otherCount:{"$sum":"$firstDoc.other"}
}}
]);
let count = 0;
let countData = list[0];
if (countData) {
for (let key in countData) {
count += countData[key];
}
}
return count;
}
\ No newline at end of file
......@@ -59,6 +59,7 @@ const fuHuaQiSchema = new Schema({
firstLoginIsChangePwd:{type:Boolean, default:false},//首次登录是否修改密码
createTime:Number,
userState:{type:Boolean, default:false}, //是否禁用
adminToken:{type:String, index:true, default:""},//管理后台登录用的token
/**绑定账号相关 */
bindDeviceId:String,//绑定时的设备号
bindId:{type:String},//绑定标识
......
......@@ -157,3 +157,8 @@ export async function statsFuHuaQiTaskReportingRate(year:number, month:number) {
return statsList;
}
export async function findOneFuHuaQiMonthTaskData(selectParam) {
return await fuHuaQiTaskModel.findOne(selectParam);
}
\ No newline at end of file
......@@ -108,3 +108,55 @@ export async function findBusinessDataByParam(param) {
}
export async function statsFHQBusiness(year:number) {
let list = await fuHuaQiBusinessModel.aggregate([
{"$match":{draftLock:true, year }},
{"$group":{_id:"$year",
TR:{"$sum":"$TR"},
ROR:{"$sum":"$ROR"},
RR:{"$sum":"$RR"},
FS:{"$sum":"$FS"},
MIS:{"$sum":"$MIS"},
NP:{"$sum":"$NP"},
TP:{"$sum":"$TP"}
}}
]);
return list[0] || { TR:0, ROR:0, RR:0, FS:0, MIS:0, NP:0, TP:0 };
}
export async function statsFHQQuerterBusinessInfo(year:number) {
let list = await fuHuaQiBusinessModel.aggregate([
{"$match":{draftLock:true, year }},
{"$group":{_id:"$quarter",
TR:{"$sum":"$TR"},
ROR:{"$sum":"$ROR"},
RR:{"$sum":"$RR"},
FS:{"$sum":"$FS"},
MIS:{"$sum":"$MIS"},
NP:{"$sum":"$NP"},
TP:{"$sum":"$TP"}
}}
]);
let TRMap = {};
let RORMap = {};
let RRMap = {};
let FSMap = {};
let MISMap = {};
let NPMap = {};
let TPMap = {};
list.forEach(info => {
let {_id, TR, ROR, RR, FS, MIS, NP, TP} = info;
let str = `第${_id}季度`;
TRMap[str] = TR;
RORMap[str] = ROR;
RRMap[str] = RR;
FSMap[str] = FS;
MISMap[str] = MIS;
NPMap[str] = NP;
TPMap[str] = TP;
});
return { TRMap, RORMap, RRMap, FSMap, MISMap, NPMap, TPMap };
}
......@@ -64,10 +64,9 @@ export async function getLog(uscc:string, startTime:number, endTime:number) {
* @param timeMs
* @returns
*/
export async function getUptotheminuteScore(startTimeMs:number, endTimeMs:number) {
export async function getUptotheminuteScore(param) {
return await fuHuaQiScoreLogModel.aggregate([
{"$match":{ timeMs :{"$gt":startTimeMs, "$lt":endTimeMs } } },
{"$project":{ score:1, uscc:1, timeMs:1 } },
{"$match":param },
{"$group":{_id:"$uscc", maxScore:{"$last":"$score"} } }
]);
}
......@@ -92,3 +91,11 @@ export async function addLogTOInitData(uscc:string, ways:number, changeMode:numb
export async function getAllLog() {
return await fuHuaQiScoreLogModel.find({ });
}
export async function getLogByParam(param) {
return await fuHuaQiScoreLogModel.find(param);
}
export async function updateLog(uscc:string, timeMs:number,ways:number,taskType:number, newTimeMs:number) {
return await fuHuaQiScoreLogModel.updateOne({uscc, ways, taskType, timeMs}, {"$set":{timeMs:newTimeMs}});
}
\ No newline at end of file
......@@ -34,6 +34,6 @@ export async function addMany_repair(addList) {
}
export async function getAllLog_repair() {
return await fuhuaqiscorelogRepairModel.find({ });
export async function getAllLog_repair(param) {
return await fuhuaqiscorelogRepairModel.find(param);
}
\ No newline at end of file
import { initPool } from "./biz/gpt/indicatorPool";
import { initOutline } from "./biz/gpt/report";
import { initSMS } from "./biz/sms";
import { initSystemTask } from "./biz/systemTask";
import { initConfig, systemConfig} from "./config/serverConfig";
......@@ -16,6 +18,9 @@ async function lanuch() {
await initSystemTask();
/**初始化腾讯云短信配置 */
await initSMS();
/**初始化指标池 */
await initPool();
initOutline();
/**创建http服务 */
httpServer.createServer(systemConfig.port);
......
......@@ -42,19 +42,32 @@ export async function checkFuHuaQiToken(req, res, next) {
export async function checkGuanWeiHuiToken(req, res, next) {
if (!req.headers) req.headers = {};
const reqToken = req.headers.token;
const userId = req.headers.userid || "";
if (!userId) return next(new BizError(ERRORENUM.身份验证失败, `userId:${userId} token:${reqToken}`));
let userInfo = await findGuanWeiHuiUserInfoByLoginId(userId);
if (!userInfo) return next(new BizError(ERRORENUM.非法登录, `userId:${userId} token:${reqToken}`));
/**2023-2-8日需求 登录一次一直有效 */
// if (userInfo.token != reqToken || (new Date().valueOf() - userInfo.tokenMs) > (3600*100*24*7) ) return next(new BizError(ERRORENUM.身份验证过期, `userId:${userId} token:${reqToken}`));
if (userInfo.token != reqToken ) return next(new BizError(ERRORENUM.身份验证过期, `userId:${userId} token:${reqToken}`));
// req.headers.userid = req.headers.userid;
const ReqToken = req.headers.token || "";
const UserId = req.headers.userid || "";
if (!UserId) return next(new BizError(ERRORENUM.身份验证失败, `userId:${UserId} token:${ReqToken}`));
if (ReqToken.length == 32) {
//管委会
let userInfo = await findGuanWeiHuiUserInfoByLoginId(UserId);
if (!userInfo || !userInfo.loginId) return next(new BizError(ERRORENUM.非法登录, `userId:${UserId} token:${ReqToken}`));
if (userInfo.token != ReqToken ) return next(new BizError(ERRORENUM.身份验证过期, `userId:${UserId} token:${ReqToken}`));
req.headers.isFuHuaQi = false;
} else if (ReqToken.length == 34) {
//孵化器
let userInfo = await findFuHuaQiByUSCC(UserId);
if (!userInfo || !userInfo.uscc) return next(new BizError(ERRORENUM.非法登录, `userId:${UserId} token:${ReqToken}`));
if (userInfo.adminToken != ReqToken) return next(new BizError(ERRORENUM.身份验证过期, `userId:${UserId} token:${ReqToken}`));
req.headers.userid = req.headers.userid;
req.headers.isFuHuaQi = true;
req.headers.operationName = userInfo.operationName;
req.headers.fuHuaQiName = userInfo.fuHuaQiName;
} else {
return next(new BizError(ERRORENUM.身份验证失败, `${UserId}的tokne不合规`));
}
next();
}
......
......@@ -43,8 +43,10 @@ export function setRouter(httpServer) {
async function getEnterpriseList(req, res) {
let reqConf = {name:'String', createType: 'Number', fuHuaQiUscc: 'String', industry: '[Number]', isNaturalPersonHolding: 'Number', state:'Number', createTime:'Number', page: 'Number' };
const NotMustHaveKeys = ["createType", "fuHuaQiUscc", "industry", "isNaturalPersonHolding", "state", "createTime", "name"];
let { createType, fuHuaQiUscc, industry, isNaturalPersonHolding, state, createTime, name, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let result = await enterpriseAdminBiz.enterpriseList(createType, fuHuaQiUscc, industry, isNaturalPersonHolding, state, createTime, name, page);
res.success(result);
}
......@@ -75,6 +77,10 @@ async function getFinancingList(req, res) {
const NotMustHaveKeys = ["monthData", "fuHuaQiName", "fuHuaQiInvestment", "industry" ];
let {monthData, fuHuaQiName, industry, fuHuaQiInvestment, page} = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
if (req.headers.isFuHuaQi) {
fuHuaQiName = req.headers.userid;
}
let result = await financingAdminBiz.financingList(monthData, fuHuaQiName, industry, fuHuaQiInvestment, page);
res.success(result);
}
......@@ -102,7 +108,13 @@ async function outPutEnterpriseData(req, res) {
const NotMustHaveKeys = ["createType", "fuHuaQiUscc", "industry", "isNaturalPersonHolding", "state", "createTime", "name" ];
let { createType, fuHuaQiUscc, industry, isNaturalPersonHolding, type, state, createTime, name } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let dataList = await enterpriseAdminBiz.outPutEnterpriseData(createType, fuHuaQiUscc, industry, isNaturalPersonHolding, state, createTime, name, type);
let isFuHuaQi = false;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
isFuHuaQi = true;
}
let dataList = await enterpriseAdminBiz.outPutEnterpriseData(createType, fuHuaQiUscc, industry, isNaturalPersonHolding, state, createTime, name, type, isFuHuaQi);
let fileName = `在孵企业${taskTool.getTimeKey()}.xlsx`;
......@@ -120,7 +132,13 @@ async function outPutFinancingData(req, res) {
const NotMustHaveKeys = ["monthData", "fuHuaQiName", "fuHuaQiInvestment", "industry" ];
let {monthData, fuHuaQiName, industry, fuHuaQiInvestment, type} = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let dataList = await financingAdminBiz.outPutFinancingList(monthData, fuHuaQiName, industry, fuHuaQiInvestment, type);
let isFuHuaQi = false;
if (req.headers.isFuHuaQi) {
fuHuaQiName = req.headers.fuHuaQiName;
isFuHuaQi = true;
}
let dataList = await financingAdminBiz.outPutFinancingList(monthData, fuHuaQiName, industry, fuHuaQiInvestment, type, isFuHuaQi);
let name = `融资企业${taskTool.getTimeKey()}.xlsx`;
......@@ -139,10 +157,13 @@ async function moveOutList(req, res) {
const NotMustHaveKeys = ["name", "fuHuaQiUscc", "industry", "isNaturalPersonHolding" ];
let { name, fuHuaQiUscc, industry, isNaturalPersonHolding, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let restult = await enterpriseAdminBiz.enterpriseMoveOutList(name, fuHuaQiUscc, industry, isNaturalPersonHolding, page);
res.success(restult);
}
......@@ -157,7 +178,12 @@ async function outPutMoveOutList(req, res) {
const NotMustHaveKeys = ["name", "fuHuaQiUscc", "industry", "isNaturalPersonHolding" ];
let { name, fuHuaQiUscc, industry, isNaturalPersonHolding, type } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let {dataList, fileName} = await enterpriseAdminBiz.outPutEnterpriseMoveOutList(name, fuHuaQiUscc, industry, isNaturalPersonHolding, type);
let isFuHuaQi = false;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
isFuHuaQi = true;
}
let {dataList, fileName} = await enterpriseAdminBiz.outPutEnterpriseMoveOutList(name, fuHuaQiUscc, industry, isNaturalPersonHolding, type, isFuHuaQi);
res.success({data:dataList, name:`迁出企业${fileName}.xlsx`});
......@@ -174,7 +200,12 @@ async function businessDataList(req, res) {
const NotMustHaveKeys = ["name", "year", "quarter" ];
let { name, year, quarter, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let restult = await enterpriseAdminBiz.getBusinessDataList(name, year, quarter, page);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let restult = await enterpriseAdminBiz.getBusinessDataList(name, year, quarter, page, fuHuaQiUscc);
res.success(restult);
}
......@@ -190,7 +221,12 @@ async function outPutBusinessData(req, res) {
const NotMustHaveKeys = ["name", "year", "quarter" ];
let { name, year, quarter, type } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let {dataList, fileName} = await enterpriseAdminBiz.outPutBusinessDataList(name, year, quarter, type);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let {dataList, fileName} = await enterpriseAdminBiz.outPutBusinessDataList(name, year, quarter, type, fuHuaQiUscc);
res.success({data:dataList, name:`${fileName}企业经营.xlsx`});
}
......@@ -206,7 +242,12 @@ async function financingInfoList(req, res) {
const NotMustHaveKeys = ["name", "financingRounds", "fuHuaQiInvestment" ];
let { name, financingRounds, fuHuaQiInvestment, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let restult = await financingAdminBiz.getEnterpriseFinancing(name, financingRounds, fuHuaQiInvestment, page);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let restult = await financingAdminBiz.getEnterpriseFinancing(name, financingRounds, fuHuaQiInvestment, page, fuHuaQiUscc);
res.success(restult);
}
......@@ -222,7 +263,12 @@ async function outPutFinancingInfoList(req, res) {
const NotMustHaveKeys = ["name", "financingRounds", "fuHuaQiInvestment" ];
let { name, financingRounds, fuHuaQiInvestment, type } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let {dataList, fileName} = await financingAdminBiz.outPutEnterpriseFinancing(name, financingRounds, fuHuaQiInvestment, type);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let {dataList, fileName} = await financingAdminBiz.outPutEnterpriseFinancing(name, financingRounds, fuHuaQiInvestment, type, fuHuaQiUscc);
res.success({data:dataList, name:`${fileName}企业填报融资数据.xlsx`});
}
......@@ -238,7 +284,12 @@ async function initialTeamList(req, res) {
const NotMustHaveKeys = ["name", "member", "type" ];
let { name, member, type, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let restult = await enterpriseAdminBiz.getInitialTeamList(name, member, type, page);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let restult = await enterpriseAdminBiz.getInitialTeamList(name, member, type, page, fuHuaQiUscc);
res.success(restult);
}
......@@ -254,7 +305,12 @@ async function outPutEnterpriseInitialTeamList(req, res) {
const NotMustHaveKeys = ["name", "member", "memberType" ];
let { name, member, type, memberType } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
let {dataList, fileName} = await enterpriseAdminBiz.outPutInitialTeamList(name, member, memberType, type);
let fuHuaQiUscc = undefined;
if (req.headers.isFuHuaQi) {
fuHuaQiUscc = req.headers.userid;
}
let {dataList, fileName} = await enterpriseAdminBiz.outPutInitialTeamList(name, member, memberType, type, fuHuaQiUscc);
res.success({data:dataList, name:`${fileName}企业创始团队数据.xlsx`});
}
\ No newline at end of file
......@@ -53,6 +53,11 @@ async function fuhuaqiBase(req, res) {
let { uscc } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsFuHuaQiBiz.fuHuaQiBaseData(uscc);
res.success(result);
......@@ -72,6 +77,10 @@ async function updateFuhuaqiBase(req, res) {
const NotMustHaveKeys = [];
let { uscc, form } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsFuHuaQiBiz.updateFuHuaQiBaseData(uscc, form);
res.success(result);
......@@ -92,6 +101,11 @@ async function operateStats(req, res) {
let { uscc, year } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsFuHuaQiOperateBiz.fuHuaQiOperateStats(uscc, year);
res.success(result);
}
......@@ -110,6 +124,10 @@ async function valueStats(req, res) {
let { uscc } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsFuHuaQiValueAnalysisBiz.getValueStats(uscc);
res.success(result);
......@@ -129,6 +147,10 @@ async function fuHuaQiWarningOverView(req, res) {
let { uscc } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsWarningBiz.worningTips(uscc);
res.success(result);
......@@ -149,6 +171,10 @@ async function fuHuaQiTaskNotFilling(req, res) {
let { uscc, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsWarningBiz.fuHuaQiTaskNotFillingList(uscc, page);
res.success(result);
......@@ -169,6 +195,10 @@ async function fuHuQiAddConflict(req, res) {
let { uscc, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsWarningBiz.fuHuQiAddConflictList(uscc, page);
res.success(result);
......@@ -189,6 +219,10 @@ async function fuHuaQiLettingRate(req, res) {
let { uscc, page } = eccReqParamater(reqConf, req.body, NotMustHaveKeys);
uscc = uscc || "913101157664917120";
if (req.headers.isFuHuaQi) {
uscc = req.headers.userid;
}
let result = await statsWarningBiz.fuHuaQiLettingRateList(uscc, page);
res.success(result);
......
/**
* 小程序端 孵化器入口 经营数据报表功能路由
*/
import * as asyncHandler from 'express-async-handler';
import { eccReqParamater } from '../../util/verificationParam';
import { aiChart, zjAiChart, generateReport } from '../../biz/gpt/report';
import { checkGuanWeiHuiToken } from '../../middleware/user';
export function setRouter(httpServer) {
/**聊天 */
httpServer.post('/fuhuaqi/gpt/chart', checkGuanWeiHuiToken, asyncHandler(chart));
httpServer.post('/fuhuaqi/gpt/zjchart', checkGuanWeiHuiToken, asyncHandler(zJchart));
httpServer.post('/fuhuaqi/gpt/doc', checkGuanWeiHuiToken, asyncHandler(doc));
}
async function chart(req, res) {
let reqConf = {msg: 'String' };
let { msg } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = {};
if (!req.headers.isFuHuaQi) {
result = await aiChart(msg);
}
res.success(result);
}
async function zJchart(req, res) {
let reqConf = {msg: 'String' };
let { msg } = eccReqParamater(reqConf, req.body);
const Uscc = req.headers.uscc;
let result = {};
if (!req.headers.isFuHuaQi) {
result = await zjAiChart(msg);
}
res.success(result);
}
async function doc(req, res) {
let result = {};
if (!req.headers.isFuHuaQi) {
result = await generateReport();
}
res.success(result);
}
......@@ -6,7 +6,7 @@
import * as asyncHandler from 'express-async-handler';
import { checkEnterpriseToken, checkFuHuaQiToken} from '../middleware/user';
import { addPoint } from '../biz/point';
import { addFuHuaQiPoint } from '../biz/point';
import { FUHUAQINODEENUM, POINTTYPEENUM } from '../config/pointConfig';
......@@ -26,7 +26,7 @@ export function setRouter(httpServer) {
*/
async function fuHuaQiLoginPoint(req, res) {
const Uscc = req.headers.uscc;
addPoint(POINTTYPEENUM.孵化器, Uscc, FUHUAQINODEENUM.进入首页, null);
addFuHuaQiPoint(Uscc, FUHUAQINODEENUM.进入首页, null);
res.success({isSuccess:true});
}
......@@ -38,6 +38,6 @@ async function fuHuaQiLoginPoint(req, res) {
*/
async function enterpriseLoginPoint(req, res) {
const Uscc = req.headers.uscc;
addPoint(POINTTYPEENUM.孵化器, Uscc, FUHUAQINODEENUM.进入首页, null);
addFuHuaQiPoint( Uscc, FUHUAQINODEENUM.进入首页, null);
res.success({isSuccess:true});
}
......@@ -30,9 +30,18 @@ export function setRouter(httpServer) {
httpServer.post('/admin/provide/enterprise/financing/industry', checkInterior, asyncHandler(addFinancingIndustry) );
/**4.3 */
// httpServer.post('/admin/provide/enterprise/bussiness/rep', checkInterior, asyncHandler(addBussinessData) );
httpServer.post('/admin/provide/fuhuaqi/scort/repair', checkInterior, asyncHandler(repairScoreData) );
httpServer.post('/admin/provide/fuhuaqi/scort/change', checkInterior, asyncHandler(repairChangeScortData) );
/**4.4 */
httpServer.post('/admin/provide/fuhuaqi/scort/repairmonth', checkInterior, asyncHandler(repairChangeTaskScortTimeData) );
/**4.4.1 */
httpServer.post('/admin/provide/fuhuaqi/instituqualify/namechangetooperationname', checkInterior, asyncHandler(repairInstituQualifyNameChangeToOperationName) );
/**修复分数 内网用 */
httpServer.post('/admin/provide/fuhuaqi/scort/repair', checkInterior, asyncHandler(repairScoreData) );
/**修复任务分数 */
httpServer.post('/admin/provide/fuhuaqi/scort/correcttask', checkInterior, asyncHandler(correctFuHuaQiScore) );
httpServer.post('/admin/provide/fuhuaqi/scort/correctmyenterprise', checkInterior, asyncHandler(correctFuHuaQiMyEnterpriseScore) );
}
......@@ -135,6 +144,29 @@ async function repairScoreData(req, res) {
async function repairChangeScortData(req, res) {
await provideBiz.changeScortData();
await provideBiz.changeScoreLogByJson();
res.success({isUsccess:true});
}
async function repairChangeTaskScortTimeData(req, res) {
await provideBiz.changeTaskScortTimeData();
res.success({isUsccess:true});
}
async function repairInstituQualifyNameChangeToOperationName(req, res) {
await provideBiz.instituQualifyNameChangeToOperationName();
res.success({isUsccess:true});
}
async function correctFuHuaQiScore(req, res) {
await provideBiz.correctFuHuaQiScoreData();
res.success({isUsccess:true});
}
async function correctFuHuaQiMyEnterpriseScore(req, res) {
await provideBiz.correctFuHuaQiMyEnterpriseScoreData();
res.success({isUsccess:true});
}
......@@ -35,6 +35,7 @@ import * as enterpriseMobileFinancingRouters from './enterpriseMobileClient/fina
import * as testABIRouters from "./mobileClient/testAbi";
import * as pointRouters from "./point";
import * as gptRouters from "./gpt/ai";
export function setRouter(httpServer){
......@@ -75,4 +76,7 @@ export function setRouter(httpServer){
testABIRouters.setRouter(httpServer);
/**埋点接口 */
pointRouters.setRouter(httpServer);
/**gpt */
gptRouters.setRouter(httpServer);
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment