fuchengshen
2022-06-28 b00ac813e5be3fedb10ca49e7e57a757295e19fe
更新设备分组接口
1个文件已添加
9个文件已修改
213 ■■■■ 已修改文件
bootstrap.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/app/modules/base/README.md 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/app/modules/base/service/sys/menu.ts 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/app/modules/base/service/sys/user.ts 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/app/modules/business/controller/admin/taskimmediately.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/app/modules/business/service/devicegroup.ts 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/app/modules/business/service/deviceinfo.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/app/modules/business/service/immediatetask.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/config/config.default.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
bootstrap.js
@@ -1,6 +1,6 @@
const WebFramework = require('@midwayjs/web').Framework;
const web = new WebFramework().configure({
  port: 9001,
  port: 8001,
});
const { Bootstrap } = require('@midwayjs/bootstrap');
package.json
@@ -52,11 +52,11 @@
    "node": ">=12.0.0"
  },
  "scripts": {
    "start": "egg-scripts start --daemon --title=cool-admin-midway --framework=@midwayjs/web --port=9001",
    "start": "egg-scripts start --daemon --title=cool-admin-midway --framework=@midwayjs/web --port=8001",
    "stop": "egg-scripts stop --title=cool-admin-midway",
    "start_build": "npm run build && cross-env NODE_ENV=development midway-bin dev",
    "docker": "egg-scripts start --title=cool-admin-midway --framework=@midwayjs/web  --sticky",
    "dev": "cross-env ets && cross-env NODE_ENV=local TS_NODE_TYPE_CHECK=false TS_NODE_TRANSPILE_ONLY=true midway-bin dev --ts --port=9001 --sticky",
    "dev": "cross-env ets && cross-env NODE_ENV=local TS_NODE_TYPE_CHECK=false TS_NODE_TRANSPILE_ONLY=true midway-bin dev --ts --port=8001 --sticky",
    "test": "midway-bin test",
    "cov": "midway-bin cov",
    "lint": "mwts check",
src/app/modules/base/README.md
@@ -66,7 +66,7 @@
```bash
$ npm i
$ npm run dev
$ open http://localhost:9001/
$ open http://localhost:8001/
```
注: `npm i`如果安装失败可以尝试使用[cnpm](https://developer.aliyun.com/mirror/NPM?from=tnpm),或者切换您的镜像源
src/app/modules/base/service/sys/menu.ts
@@ -42,6 +42,7 @@
        }
      });
    }
    console.log(menus, "menus")
    return menus;
  }
@@ -99,10 +100,10 @@
        FROM
            t_sys_menu a
        ${this.setSql(
          !isAdmin,
          'JOIN t_sys_role_menu b on a.id = b.menuId AND b.roleId in (?)',
          [roleIds]
        )}
      !isAdmin,
      'JOIN t_sys_role_menu b on a.id = b.menuId AND b.roleId in (?)',
      [roleIds]
    )}
        GROUP BY a.id
        ORDER BY
            orderNum ASC`);
src/app/modules/base/service/sys/user.ts
@@ -34,6 +34,7 @@
   * @param query
   */
  async page(query) {
    console.log(query, "page 打印 query")
    const { keyWord, status, departmentIds = [] } = query;
    const permsDepartmentArr = await this.baseSysPermsService.departmentIds(
      this.ctx.admin.userId
@@ -50,21 +51,21 @@
            LEFT JOIN t_sys_department d on a.departmentId = d.id
        WHERE 1 = 1
            ${this.setSql(
              !_.isEmpty(departmentIds),
              'and a.departmentId in (?)',
              [departmentIds]
            )}
      !_.isEmpty(departmentIds),
      'and a.departmentId in (?)',
      [departmentIds]
    )}
            ${this.setSql(status, 'and a.status = ?', [status])}
            ${this.setSql(keyWord, 'and (a.name LIKE ? or a.username LIKE ?)', [
              `%${keyWord}%`,
              `%${keyWord}%`,
            ])}
      `%${keyWord}%`,
      `%${keyWord}%`,
    ])}
            ${this.setSql(true, 'and a.username != ?', ['admin'])}
            ${this.setSql(
              this.ctx.admin.username !== 'admin',
              'and a.departmentId in (?)',
              [!_.isEmpty(permsDepartmentArr) ? permsDepartmentArr : [null]]
            )}
      this.ctx.admin.username !== 'admin',
      'and a.departmentId in (?)',
      [!_.isEmpty(permsDepartmentArr) ? permsDepartmentArr : [null]]
    )}
        GROUP BY a.id
        `;
    return this.sqlRenderPage(sql, query);
@@ -117,9 +118,11 @@
   * @param param
   */
  async add(param) {
    console.log(param, "param")
    const exists = await this.baseSysUserEntity.findOne({
      username: param.username,
    });
    console.log(exists, "exists")
    if (!_.isEmpty(exists)) {
      throw new CoolCommException('用户名已经存在~');
    }
src/app/modules/business/controller/admin/taskimmediately.ts
@@ -1,7 +1,7 @@
import { ALL, Body, Get, Inject, Post, Provide, Query } from '@midwayjs/decorator';
import { CoolController, BaseController } from '@cool-midway/core';
import { Taskimmediately } from '../../entity/taskimmediately';
// import { TaskimmediatelyService } from '../../service/taskimmediately';
import { Immediatetask } from '../../service/immediatetask';
import { DataController } from '../../../base/controller/dataController';
/**
        * 即时任务记录
@@ -10,7 +10,7 @@
@CoolController({
  api: ['add', 'delete', 'update', 'list', 'page', 'info'],
  entity: Taskimmediately,
  //   service: TaskimmediatelyService,
  service: Immediatetask,
})
export class TaskimmediatelyController extends DataController {
  //   @Inject()
src/app/modules/business/service/devicegroup.ts
@@ -1,14 +1,113 @@
import { Provide } from '@midwayjs/decorator';
import { BaseService } from '@cool-midway/core';
import { BaseService, CoolCommException } from '@cool-midway/core';
import { InjectEntityModel } from '@midwayjs/orm';
import { Repository } from 'typeorm';
import { DataService } from '../../base/service/dataapi/dataapi';
import { Devicegroup } from '../entity/devicegroup';
import { Basedeviceinfo } from '../entity/basedeviceinfo';
import { CoolSocket } from '@cool-midway/socket';
/**
        * 设备分组
        */
@Provide()
export class DevicegroupService extends DataService {
  @InjectEntityModel(Basedeviceinfo)
  Basedeviceinfo: Repository<Basedeviceinfo>;
  @InjectEntityModel(Devicegroup)
  devicegroup: Repository<Devicegroup>
}
  Devicegroup: Repository<Devicegroup>;
  /**
     * 分页查询
     * @param query
     */
  async page(query) {
    const sql = `SELECT
   *
  FROM
      t_base_device_group a
  WHERE
      1=1
      `
    return this.sqlRenderPage(sql, query);
  }
  async add(param: any) {
    let ids = param.logic_id
    let deviceinfo = this.Basedeviceinfo
    let data_len = deviceinfo.find()
    console.log((await data_len).length, "data_len")
    let id_str = ''
    if (ids.length == (await data_len).length) {
      throw new CoolCommException("是否更新周期任务")
      // console.log("是否更新周期任务")
      // return await super.add(param)
    } else {
      for (let x = 0; x < ids.length; x++) {
        let change_message = await deviceinfo.findOne({ logic_id: ids[x] })
        if (change_message.status == 1) {
          id_str += `${ids[x]},`
        }
      }
      if (id_str == '') {
        if (id_str == '') {
          for (let x = 0; x < ids.length; x++) {
            let change_message = await deviceinfo.findOne({ logic_id: ids[x] })
            change_message.status = 1
            await this.nativeQuery(
              'update t_base_deviceinfo set status = 1 where logic_id = ?',
              [ids[x]]
            );
          }
        }
        param.logic_id = param.logic_id.toString();
        return await super.add(param)
      } else {
        throw new CoolCommException(`${id_str}设备已经在其他分组中存在,请重新选择`)
      }
    }
  }
  async update(param: any): Promise<void> {
    console.log(param, "param")
    param.logic_id = param.logic_id.toString();
    await this.Devicegroup.update(param.id, param)
  }
  async delete(ids: number[]) {
    console.log(ids, "ids")
    for (let i = 0; i < ids.length; i++) {
      let change_message = this.Devicegroup.findOne({ id: ids[i] })
      let logic_id_s = (await change_message).logic_id.split(",")
      console.log(logic_id_s, "logic_ids")
      await this.nativeQuery(
        `update t_base_deviceinfo set status = 0 where logic_id in (?)`,
        [logic_id_s]
      )
      await this.nativeQuery(
        `delete from t_base_device_group where id = ?`,
        [ids[i]]
      )
    }
  }
}
src/app/modules/business/service/deviceinfo.ts
@@ -15,37 +15,11 @@
  @InjectEntityModel(Devicegroup)
  Devicegroup: Repository<Devicegroup>;
  /**
   * 描述
   */
  // async add(param: any) {
  //   console.log(param, "dddddddd")
  //   const { logic_id } = param
  //   const devicegroup = this.Devicegroup
  //   await this.Devicegroup.insert(param)
  //   return await super.add(param)
  // }
  async delete(logic_id: any) {
    console.log(this.ctx, "ddd")
    await this.nativeQuery(
      'DELETE t_base_deviceinfo,t_base_device_group FROM t_base_deviceinfo,t_base_device_group WHERE t_base_deviceinfo.logic_id = t_base_device_group.logic_id AND t_base_deviceinfo.id in (?)',
      [logic_id]
    );
    await this.Basedeviceinfo.delete(logic_id)
  }
  async page(query) {
    // const { keyWord, status, departmentIds = [] } = query;
    // const permsDepartmentArr = await this.Basedeviceinfo.id(
    //   this.ctx.admin.userId
    // ); // 部门权限
    const sql = `
        SELECT a.*,b.configurator FROM t_base_deviceinfo a,t_base_device_group b WHERE 1 = 1`;
    return this.sqlRenderPage(sql, query);
  }
}
src/app/modules/business/service/immediatetask.ts
New file
@@ -0,0 +1,30 @@
import { Provide } from '@midwayjs/decorator';
import { BaseService, CoolCommException } from '@cool-midway/core';
import { InjectEntityModel } from '@midwayjs/orm';
import { Repository } from 'typeorm';
import { DataService } from '../../base/service/dataapi/dataapi';
import { Devicegroup } from '../entity/devicegroup';
import { Basedeviceinfo } from '../entity/basedeviceinfo';
import { CoolSocket } from '@cool-midway/socket';
/**
        * 设备分组
        */
@Provide()
export class Immediatetask extends DataService {
  @InjectEntityModel(Basedeviceinfo)
  Basedeviceinfo: Repository<Basedeviceinfo>;
  @InjectEntityModel(Devicegroup)
  Devicegroup: Repository<Devicegroup>;
  async add(param: any) {
    console.log(param, "parm")
    param.logic_ids = param.logic_ids.toString();
    return await super.add(param)
  }
}
src/config/config.default.ts
@@ -74,7 +74,7 @@
    // 文件上传
    file: {
      // 文件路径前缀 本地上传模式下 有效
      // domain: 'http://127.0.0.1:',
      // domain: 'http://127.0.0.1:8001',
      domain: 'http://112.74.77.127:9100/hn',
    },
  } as CoolConfig;