|
@@ -56,14 +56,137 @@ export class UtilService {
|
|
|
const projectTotal = await this.projectModel.count();
|
|
|
const achievementTotal = await this.achievementModel.count();
|
|
|
const data = [
|
|
|
- { id: '1', name: '企业', num: `${companyTotal}+`, unit: '家' },
|
|
|
- { id: '2', name: '供给', num: `${supplyTotal}+`, unit: '个' },
|
|
|
- { id: '3', name: '需求', num: `${demandTotal}+`, unit: '个' },
|
|
|
- { id: '4', name: '项目', num: `${projectTotal}+`, unit: '个' },
|
|
|
- { id: '5', name: '成果', num: `${achievementTotal}+`, unit: '个' },
|
|
|
+ { id: '1', name: '企业', num: companyTotal, unit: '家' },
|
|
|
+ { id: '2', name: '供给', num: supplyTotal, unit: '个' },
|
|
|
+ { id: '3', name: '需求', num: demandTotal, unit: '个' },
|
|
|
+ { id: '4', name: '项目', num: projectTotal, unit: '个' },
|
|
|
+ { id: '5', name: '成果', num: achievementTotal, unit: '个' },
|
|
|
];
|
|
|
return data;
|
|
|
}
|
|
|
+ // 企业行业领域统计
|
|
|
+ async Companystatistics() {
|
|
|
+ let res;
|
|
|
+ const nameList1 = [];
|
|
|
+ const list1 = [];
|
|
|
+ const nameList2 = [];
|
|
|
+ const list2 = [];
|
|
|
+ let req;
|
|
|
+ res = await this.companyModel.createQueryBuilder('company').select('company.type', 'type').addSelect('COUNT(company.id)', 'total').groupBy('company.type').getRawMany();
|
|
|
+ req = await this.dictDataService.query({ code: 'companyIndustry', is_use: '0' }, {});
|
|
|
+ for (const val of res) {
|
|
|
+ if (req.data) {
|
|
|
+ const select = req.data.find(f => f.value === val.type);
|
|
|
+ if (select) {
|
|
|
+ nameList1.push(select.label);
|
|
|
+ list1.push({ name: select.label, value: val.total });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ res = await this.companyModel.createQueryBuilder('company').select('company.pattern', 'pattern').addSelect('COUNT(company.id)', 'total').groupBy('company.pattern').getRawMany();
|
|
|
+ req = await this.dictDataService.query({ code: 'companyType', is_use: '0' }, {});
|
|
|
+ if (req.data) {
|
|
|
+ for (const val of req.data) {
|
|
|
+ nameList2.push(val.label);
|
|
|
+ const select = res.find(f => f.pattern === val.value);
|
|
|
+ if (select) list2.push(select.total);
|
|
|
+ else list2.push(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return { one: { nameList: nameList1, list: list1 }, two: { nameList: nameList2, list: list2 } };
|
|
|
+ }
|
|
|
+ // 供给行业统计
|
|
|
+ async Supplystatistics() {
|
|
|
+ let res;
|
|
|
+ const nameList1 = [];
|
|
|
+ const list1 = [];
|
|
|
+ const nameList2 = [];
|
|
|
+ const list2 = [];
|
|
|
+ res = await this.supplyModel.createQueryBuilder('supply').select('supply.industry', 'industry').addSelect('COUNT(supply.id)', 'total').groupBy('supply.industry').getRawMany();
|
|
|
+ for (const val of res) {
|
|
|
+ if (val.industry) {
|
|
|
+ nameList1.push(val.industry);
|
|
|
+ list1.push({ name: val.industry, value: val.total });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ res = await this.supplyModel.createQueryBuilder('supply').select('supply.source', 'source').addSelect('COUNT(supply.id)', 'total').groupBy('supply.source').getRawMany();
|
|
|
+ for (const val of res) {
|
|
|
+ if (val.source) {
|
|
|
+ nameList2.push(val.source);
|
|
|
+ list2.push(val.total);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return { one: { nameList: nameList1, list: list1 }, two: { nameList: nameList2, list: list2 } };
|
|
|
+ }
|
|
|
+ // 需求行业统计
|
|
|
+ async Demandstatistics() {
|
|
|
+ let res;
|
|
|
+ const nameList1 = [];
|
|
|
+ const list1 = [];
|
|
|
+ const nameList2 = [];
|
|
|
+ const list2 = [];
|
|
|
+ res = await this.demandModel.createQueryBuilder('demand').select('demand.industry', 'industry').addSelect('COUNT(demand.id)', 'total').groupBy('demand.industry').getRawMany();
|
|
|
+ for (const val of res) {
|
|
|
+ if (val.industry) {
|
|
|
+ nameList1.push(val.industry);
|
|
|
+ list1.push({ name: val.industry, value: val.total });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ res = await this.demandModel.createQueryBuilder('demand').select('demand.year', 'year').addSelect('COUNT(demand.id)', 'total').groupBy('demand.year').getRawMany();
|
|
|
+ for (const val of res) {
|
|
|
+ if (val.year) {
|
|
|
+ nameList2.push(val.year);
|
|
|
+ list2.push(val.total);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return { one: { nameList: nameList1, list: list1 }, two: { nameList: nameList2, list: list2 } };
|
|
|
+ }
|
|
|
+ // 项目行业统计
|
|
|
+ async Projectstatistics() {
|
|
|
+ let res;
|
|
|
+ const nameList1 = [];
|
|
|
+ const list1 = [];
|
|
|
+ const nameList2 = [];
|
|
|
+ const list2 = [];
|
|
|
+ res = await this.projectModel.createQueryBuilder('project').select('project.industry', 'industry').addSelect('COUNT(project.id)', 'total').groupBy('project.industry').getRawMany();
|
|
|
+ for (const val of res) {
|
|
|
+ if (val.industry) {
|
|
|
+ nameList1.push(val.industry);
|
|
|
+ list1.push({ name: val.industry, value: val.total });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ res = await this.projectModel.createQueryBuilder('project').select('project.progress', 'progress').addSelect('COUNT(project.id)', 'total').groupBy('project.progress').getRawMany();
|
|
|
+ for (const val of res) {
|
|
|
+ if (val.progress) {
|
|
|
+ nameList2.push(val.progress);
|
|
|
+ list2.push(val.total);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return { one: { nameList: nameList1, list: list1 }, two: { nameList: nameList2, list: list2 } };
|
|
|
+ }
|
|
|
+ // 成果行业统计
|
|
|
+ async Achievementstatistics() {
|
|
|
+ let res;
|
|
|
+ const nameList1 = [];
|
|
|
+ const list1 = [];
|
|
|
+ const nameList2 = [];
|
|
|
+ const list2 = [];
|
|
|
+ res = await this.achievementModel.createQueryBuilder('achievement').select('achievement.field', 'field').addSelect('COUNT(achievement.id)', 'total').groupBy('achievement.field').getRawMany();
|
|
|
+ for (const val of res) {
|
|
|
+ if (val.field) {
|
|
|
+ nameList1.push(val.field);
|
|
|
+ list1.push({ name: val.field, value: val.total });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ res = await this.achievementModel.createQueryBuilder('achievement').select('achievement.source', 'source').addSelect('COUNT(achievement.id)', 'total').groupBy('achievement.source').getRawMany();
|
|
|
+ for (const val of res) {
|
|
|
+ if (val.source) {
|
|
|
+ nameList2.push(val.source);
|
|
|
+ list2.push(val.total);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return { one: { nameList: nameList1, list: list1 }, two: { nameList: nameList2, list: list2 } };
|
|
|
+ }
|
|
|
// 导出
|
|
|
async toExport(query) {
|
|
|
const { table, config, user } = query;
|
|
@@ -412,7 +535,7 @@ export class UtilService {
|
|
|
result = mobj.format('YYYY-MM-DD');
|
|
|
}
|
|
|
} else if (type === 'dict') {
|
|
|
- const req = await this.dictDataService.query({}, { code });
|
|
|
+ const req = await this.dictDataService.query({ code }, {});
|
|
|
if (req.data) {
|
|
|
const selected = req.data.find(f => f.label === val);
|
|
|
if (selected) result = get(selected, 'value');
|