Forráskód Böngészése

修改数据分析

zs 8 hónapja
szülő
commit
f36ffcdf9f
2 módosított fájl, 158 hozzáadás és 7 törlés
  1. 29 1
      src/controller/util.controller.ts
  2. 129 6
      src/service/util.service.ts

+ 29 - 1
src/controller/util.controller.ts

@@ -1,4 +1,4 @@
-import { Controller, Body, Post, Inject } from '@midwayjs/core';
+import { Controller, Body, Get, Post, Inject } from '@midwayjs/core';
 import { HttpService } from '@midwayjs/axios';
 import { Context } from '@midwayjs/koa';
 import { ApiTags } from '@midwayjs/swagger';
@@ -23,6 +23,34 @@ export class UtilController {
     return result;
   }
 
+  @Get('/cstatistics')
+  async Companystatistics() {
+    const result = await this.service.Companystatistics();
+    return result;
+  }
+
+  @Get('/sstatistics')
+  async Supplystatistics() {
+    const result = await this.service.Supplystatistics();
+    return result;
+  }
+
+  @Get('/dstatistics')
+  async Demandstatistics() {
+    const result = await this.service.Demandstatistics();
+    return result;
+  }
+
+  @Get('/pstatistics')
+  async Projectstatistics() {
+    const result = await this.service.Projectstatistics();
+    return result;
+  }
+  @Get('/astatistics')
+  async Achievementstatistics() {
+    const result = await this.service.Achievementstatistics();
+    return result;
+  }
   @Post('/toExport')
   async toExport(@Body() data: object) {
     const result = await this.service.toExport(data);

+ 129 - 6
src/service/util.service.ts

@@ -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');