cooladmin 后端 查询记录

ops/2024/11/16 22:01:15/

查询记录:pageQueryOp中列表查询的group by

node ts controller代码如下

import { CoolController, BaseController } from '@cool-midway/core';
import { Inject, Post, Get, Param } from '@midwayjs/decorator';
import { ComparePricesPlanInfoEntity } from '../../entity/comparePricesPlanInfo';
import { InventoryOrderInfoService } from '../../service/inventoryOrderInfo';
import { PlanInfoEntity } from '../../entity/planInfo';
import { ConsumableDetailEntity } from '../../../consumable/entity/detail';
import { Context } from 'vm';
import { OrderEntity } from '../../entity/order';
import { ComparePricesEntity } from '../../entity/comparePrices';
import { ComparePricesInfoEntity } from '../../entity/comparePricesInfo';
import { VendorEntity } from '../../entity/vendor';
import { QueryBuilder } from 'typeorm';/*** 描述*/
@CoolController({api: ['add', 'delete', 'update', 'info', 'list', 'page'],entity: OrderEntity,service: InventoryOrderInfoService,pageQueryOp: {// keyWordLikeFields: ['vendorName'],// 指定返回字段select: [//采购单信息'a.id','a.state',//状态:待确认(0)、已发货(1)、已收货(2)'a.inspectorName',//验收人员姓名'a.acceptanceContent',//验收内容'a.resultState',//验收结果状态:未验收(0)、通过(1)、不通过(2)'a.reason',//通过/不通过原因'a.createBy',//创建者'a.createTime',//创建时间'a.code',//订单编码'a.title',//订单标题'a.content',//订单内容'a.remark as orderRemark',//订单备注//比价'cp.comparePricesInfoId',//比价信息ID'cp.consumableDetailId',//耗材ID//采用价格信息'cpinfo.quotedPrice',//报价'cpinfo.serviceContent',//服务内容'cpinfo.deliveryTime',//货期'cpinfo.isProposed',//拟用采纳'cpinfo.vendorId',//供应商ID// 'cpinfo.consumableDetailId',//耗材ID'cpinfo.planInfoId',//计划明细表ID'cpinfo.vcid',//供应商-耗材关联表ID//耗材信息'c.consumableNo','c.consumableName','c.brand','c.model','c.type','c.remark as consumableDetailRemark','c.status',//供应商信息'v.vendorCode','v.vendorName','v.vendorNick','v.vendorEn',//采购计划数量'SUM(pinfo.number) as sumNum',//采购计划规格'pinfo.specification',//采购单信息// 'a.id',// 'a.planInfoId',// 'a.comparePricesId',// 'a.createTime',// 'a.updateTime',// //采购计划详情// 'b.planId',// 'b.consumableDetailId',// 'b.specification',// 'b.number',// 'b.budget',// 'b.deliveryTime',// // 'b.createBy',// // 'b.createTime',],// 联表查询join: [//ComparePricesEntity{entity: ComparePricesEntity,alias: 'cp',condition: 'a.comparePricesId = cp.id',type: 'leftJoin',},//ComparePricesInfoEntity{entity: ComparePricesInfoEntity,alias: 'cpinfo',condition: 'cp.comparePricesInfoId = cpinfo.id',type: 'leftJoin',},//ConsumableDetailEntity{entity: ConsumableDetailEntity,alias: 'c',condition: 'cp.consumableDetailId = c.id',type: 'leftJoin',},//VendorEntity{entity: VendorEntity,alias: 'v',condition: 'cpinfo.vendorId = v.id',type: 'leftJoin',},//ComparePricesPlanInfoEntity{entity: ComparePricesPlanInfoEntity,alias: 'cppinfo',condition: 'a.comparePricesId = cppinfo.comparePricesId',type: 'leftJoin',},//PlanInfoEntity{entity: PlanInfoEntity,alias: 'pinfo',condition: 'cppinfo.planInfoId = pinfo.id',type: 'leftJoin',},// {//     entity: OrderEntity,//     alias: 'o',//     condition: 'a.comparePricesId = o.comparePricesId',//     type: 'leftJoin',// },],where: async (ctx: Context) => {return [// ['a.id not in (SELECT comparePricesId from pi_purchase_order)', {}],// ['a.comparePricesId = :comparePricesId', { comparePricesId: ctx.request.body.comparePricesId }]];},extend: (queryBuilder: QueryBuilder<any>) => {queryBuilder.groupBy(['a.id','pinfo.specification',]);},addOrderBy: {'a.createTime': 'asc',},},
})
export class InventoryOrderInfoController extends BaseController {@Inject()inventoryOrderInfoService: InventoryOrderInfoService;
}

具体的SQL执行语句:

SELECTa.id,a.state,a.inspectorName,a.acceptanceContent,a.resultState,a.reason,a.createBy,a.createTime,a.CODE,a.title,a.content,a.remark AS orderRemark,cp.comparePricesInfoId,cp.consumableDetailId,cpinfo.quotedPrice,cpinfo.serviceContent,cpinfo.deliveryTime,cpinfo.isProposed,cpinfo.vendorId,cpinfo.planInfoId,cpinfo.vcid,c.consumableNo,c.consumableName,c.brand,c.model,c.type,c.remark AS consumableDetailRemark,c.STATUS,v.vendorCode,v.vendorName,v.vendorNick,v.vendorEn,SUM( pinfo.number ) AS sumNum,pinfo.specification 
FROM`pi_purchase_order` `a`LEFT JOIN `pi_compare_prices` `cp` ON `a`.`comparePricesId` = `cp`.`id`LEFT JOIN `pi_compare_prices_info` `cpinfo` ON `cp`.`comparePricesInfoId` = `cpinfo`.`id`LEFT JOIN `consumable_detail` `c` ON `cp`.`consumableDetailId` = `c`.`id`LEFT JOIN `pi_vendor` `v` ON `cpinfo`.`vendorId` = `v`.`id`LEFT JOIN `pi_compare_prices_plan_info` `cppinfo` ON `a`.`comparePricesId` = `cppinfo`.`comparePricesId`LEFT JOIN `pi_plan_info` `pinfo` ON `cppinfo`.`planInfoId` = `pinfo`.`id` 
GROUP BY`a`.`id`,pinfo.specification 
ORDER BY`a`.`createTime` ASC,`createTime` DESC


http://www.ppmy.cn/ops/134246.html

相关文章

华为云前台用户可挂载数据盘和系统盘是怎么做到的?

用户可以选择磁盘类型和容量&#xff0c;其后台是管理员对接存储设备 1.管理员如何在后台对接存储设备&#xff08;特指业务存储&#xff09; 1.1FusionSphere CPS&#xff08;Cloud Provisionivice&#xff09;云装配服务 它是first node https://10.200.4.159:8890 对接存…

linux安装好用的第三方中文输入法

第三方输入法比自带的ibus好用多了&#xff0c;总体评价就是顺畅。 首先&#xff0c;第一步&#xff0c;看你系统你目前使用的是哪种输入法平台 在设置 -> 区域与语言 -> 管理已安装的语言 -> 键盘输入法系统 查看。 如果是ibus&#xff0c;就安装ibus-rime, 命令 s…

Linux 命令行配置为单臂旁路由。

准备&#xff1a; sudo nano /etc/sysctl.conf net.ipv4.ip_forward1 sudo sysctl -p 方法一&#xff1a;&#xff08;NATFORWARD&#xff09; en0 为单臂路由网卡 注意&#xff1a;都可以增加来源限定 # 设置NAT规则 sudo iptables -t nat -A POSTROUTING -o en0 -j MASQ…

Python——飞机大战

以下是一个简单的用Python编写的飞机大战游戏的源代码&#xff1a; import pygame import random# 初始化游戏 pygame.init()# 设置游戏窗口的尺寸 screen_width 480 screen_height 640 screen pygame.display.set_mode((screen_width, screen_height))# 设置游戏标题 pyga…

Springboot 整合 itext 实现PDF文件合并,识别图片则转成PDF拼接

目录 前言一、引用依赖二、使用步骤1.Controller2.Service接口3.实现类三、请求接口及结果前言 本文实现 Springboot 整合 itext 实现PDF文件合并,图片转PDF拼接。 一、引用依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-co…

十:详解HTTP的请求行

在HTTP通信中,请求行(Request Line)是HTTP请求的开头部分,位于请求头(Request Headers)之前,包含了请求的核心信息。请求行主要由请求方法(Method)、请求目标(Target,即请求的URI)、协议版本(HTTP Version)三个要素组成。这些要素共同定义了客户端请求服务器资源…

从华为到创业公司

我有一个朋友&#xff0c;在华为工作了很长一段时间&#xff0c;一年多前&#xff0c;他从华为出来到了一家创业公司。 周末趁着有时间&#xff0c;我跟他聊了下关于从华为到创业公司的一些问题&#xff0c;总结给大伙看看。 ▎1 在华为工作和在创业公司工作最大的差别是什么呢…

读书笔记:《Redis设计与实现》之发布订阅

发布与订阅简介 命令 SUBSCRIBE: 订阅一个频道 SUBSCRIBE channel [channel ...]SUBSCRIBE: 向一个频道发送信息 PUBLISH channel messageUNSUBSCRIBE: 取消订阅一个频道 UNSUBSCRIBE [channel [channel ...]]PSUBSCRIBE:订阅一个或多给定模式的频道 PSUBSCRIBE pattern …