| | |
| | | import { Provide } from '@midwayjs/core'; |
| | | import { Inject, Provide } from '@midwayjs/core'; |
| | | import { BaseService } from '@cool-midway/core'; |
| | | import { InjectEntityModel } from '@midwayjs/typeorm'; |
| | | import { Repository } from 'typeorm'; |
| | | import { BaseSysDepartmentEntity } from '../../base/entity/sys/department'; |
| | | import { BasicdataIotEntity } from '../entity/iot'; |
| | | import { BaseSysPermsService } from '../../base/service/sys/perms'; |
| | | import { BaseSysParamService } from '../../base/service/sys/param'; |
| | | import * as _ from 'lodash'; |
| | | |
| | | /** |
| | | * 数据源定义信息服务 |
| | |
| | | export class BasicdataIotService extends BaseService { |
| | | @InjectEntityModel(BasicdataIotEntity) |
| | | basicdataIotEntity: Repository<BasicdataIotEntity>; |
| | | |
| | | @InjectEntityModel(BaseSysDepartmentEntity) |
| | | baseSysDepartmentEntity: Repository<BaseSysDepartmentEntity>; |
| | | |
| | | @Inject() |
| | | baseSysParamService: BaseSysParamService; |
| | | |
| | | @Inject() |
| | | baseSysPermsService: BaseSysPermsService; |
| | | |
| | | @Inject() |
| | | ctx; |
| | | |
| | | |
| | | /** |
| | | * 获得部门菜单 |
| | | */ |
| | | async list() { |
| | | const permsDepartmentArr = await this.baseSysPermsService.departmentIds( |
| | | this.ctx.admin.userId |
| | | ); |
| | | // 过滤部门权限 |
| | | const sql = ` |
| | | ( |
| | | SELECT |
| | | a.id AS a_id, |
| | | a.tenantId AS a_tenantId, |
| | | a.name AS a_name, |
| | | a.parentId AS a_parentId, |
| | | a.orderNum AS a_orderNum |
| | | FROM base_sys_department a |
| | | WHERE 1=1 |
| | | ${this.setSql( |
| | | this.ctx.admin.username !== 'admin', |
| | | `and (a.departmentId in (?) `, |
| | | [!_.isEmpty(permsDepartmentArr) ? permsDepartmentArr : [null]] |
| | | )} |
| | | ) |
| | | UNION ALL |
| | | ( |
| | | SELECT |
| | | b.businessId AS a_id, |
| | | a.tenantId AS a_tenantId, |
| | | b.businessName AS a_name, |
| | | b.departmentId AS a_parentId, |
| | | a.orderNum AS a_orderNum |
| | | FROM t_basicdata_site b |
| | | LEFT JOIN base_sys_department a ON b.departmentId = a.id |
| | | ) |
| | | ORDER BY a_orderNum ASC`; |
| | | const result = await this.nativeQuery(sql); |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 监控设备查询 |
| | | */ |
| | | async getYsDevices(businessId: string) { |
| | | // 修复原先key、secret取值颠倒bug + 增加await |
| | | const ys7_appKey: string = await this.baseSysParamService.dataByKey('ys7.appKey'); |
| | | // departmentId 是数字,尝试转换;转换失败赋值 null |
| | | const deptId = /^\d+$/.test(businessId) ? Number(businessId) : null; |
| | | const qb = this.basicdataIotEntity.createQueryBuilder('a') |
| | | .select([ |
| | | 'a.id', |
| | | 'a.iotCode', |
| | | 'a.iotName', |
| | | 'a.iotTypeCode', |
| | | 'a.businessType', |
| | | 'a.businessId', |
| | | 'a.departmentId', |
| | | 'a.iotKey', |
| | | 'a.iotSecret', |
| | | 'a.iotChanel', |
| | | 'a.installLocation', |
| | | 'a.protocol' |
| | | ]) |
| | | .where('a.iotTypeCode IN (:...typeIds)', { |
| | | typeIds: ['萤石云固定监控', '萤石云车载监控'], |
| | | }); |
| | | if (deptId !== null) { |
| | | qb.andWhere('(a.businessId = :businessId OR a.departmentId = :deptId)', { |
| | | businessId, |
| | | deptId |
| | | }); |
| | | } else { |
| | | qb.andWhere('a.businessId = :businessId', { businessId }); |
| | | } |
| | | const result = await qb.orderBy('a.iotName', 'ASC').getMany(); |
| | | const deviceList = result.map(item => { |
| | | return { |
| | | ...item, |
| | | iotKey: ys7_appKey |
| | | }; |
| | | }); |
| | | return deviceList; |
| | | } |
| | | |
| | | |
| | | } |