cooladmin 后端 查询记录

查询记录: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.mzph.cn/news/886193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cesium 3DTiles之pnts格式详解

Point Cloud 1 概述 点云&#xff08;Point Cloud&#xff09;瓦片格式用于高效流式传输大规模点云数据&#xff0c;常用于 3D 可视化中。每个点由位置&#xff08;Position&#xff09;和可选的属性定义&#xff0c;这些属性用来描述点的外观&#xff08;如颜色、法线等&…

【SpringBoot】20 同步调用、异步调用、异步回调

Git仓库 https://gitee.com/Lin_DH/system 介绍 同步调用&#xff1a;指程序在执行时&#xff0c;调用方需要等待函数调用返回结果后&#xff0c;才能继续执行下一步操作&#xff0c;是一种阻塞式调用。 异步调用&#xff1a;指程序在执行时&#xff0c;调用方在调用函数后立…

ESLint 使用教程(五):ESLint 和 Prettier 的结合使用与冲突解决

系列文章 ESLint 使用教程&#xff08;一&#xff09;&#xff1a;从零配置 ESLint ESLint 使用教程&#xff08;二&#xff09;&#xff1a;一步步教你编写 Eslint 自定义规则 ESLint 使用教程&#xff08;三&#xff09;&#xff1a;12个ESLint 配置项功能与使用方式详解 ES…

Qt_day5_常用类

常用类 目录 1. QString 字符串类&#xff08;掌握&#xff09; 2. 容器类&#xff08;掌握&#xff09; 2.1 顺序容器QList 2.2 关联容器QMap 3. 几种Qt数据类型&#xff08;熟悉&#xff09; 3.1 跨平台数据类型 3.2 QVariant 统一数据类型 3.3 QStringList 字符串列表 4. QD…

VBA学习笔记:基础知识

1.打开编辑器 工具-选项&#xff0c;可设置编辑器字体大小等 2. 运行 快捷键F5&#xff0c;或 运行-运行宏 若提示宏被禁止&#xff0c;解决办法之一&#xff1a;工具-宏-安全性-安全级-中&#xff0c;关闭excel重新打开&#xff0c;启用宏 保存文件格式为xla或xlam 3. 基本…

【CANOE】【学习】【DecodeString】字节转为中文字符输出

系列文章目录 文章目录 系列文章目录前言一、DecodeString 转为中文字节输出二、代码举例1.代码Demo2.DecodeString 函数说明函数语法&#xff1a;参数说明&#xff1a;返回值&#xff1a;使用示例&#xff1a;示例代码&#xff1a; 说明&#xff1a; 前言 有时候使用的时候&a…

超好用shell脚本NuShell mac安装

利用管道控制任意系统 Nu 可以在 Linux、macOS 和 Windows 上运行。一次学习&#xff0c;处处可用。 一切皆数据 Nu 管道使用结构化数据&#xff0c;你可以用同样的方式安全地选择&#xff0c;过滤和排序。停止解析字符串&#xff0c;开始解决问题。 强大的插件系统 具备强…

【Window主机访问Ubuntu从机——Xrdp配置与使用】

使用Xrdp在Window环境下远程桌面访问Ubuntu主机 文章目录 Ubuntu安装图形化界面Ubuntu安装Xrdp通过网线连接两台主机Window主机有线连接配置Ubuntu从机设置测试有线连接 Window主机打开远程桌面功能参考文章总结 Ubuntu安装图形化界面 sudo apt update sudo apt upgrade sudo …

ECharts图表图例8

用eclipse软件制作动态单仪表图 用java知识点 代码截图&#xff1a;

实验6记录网络与故障排除

实验6记录网络与故障排除 实验目的及要求&#xff1a; 通过实验&#xff0c;掌握如何利用文档记录网络设备相关信息并完成网络拓扑结构的绘制。能够使用各种技术和工具来找出连通性问题&#xff0c;使用文档来指导故障排除工作&#xff0c;确定具体的网络问题&#xff0c;实施…

读取文件内容、修改文件内容、识别文件夹目录(Web操作系统文件/文件夹详解)

前言 因 Unicode IDE 编辑器导入文件、文件夹需要&#xff0c;研究了下导入文件/文件夹的功能实现&#xff0c;发现目前相关文章有点少&#xff0c;故而记录下过程&#xff0c;如果有误&#xff0c;还望指正。(API的兼容性及相关属性、接口定义&#xff0c;请自行查看文件系统 …

【卡尔曼滤波】数据融合Fusion的应用 C语言、Python实现(Kalman Filter)

【卡尔曼滤波】数据融合Fusion的应用 C语言、Python实现&#xff08;Kalman Filter&#xff09; 更新以gitee为准&#xff1a; gitee地址 文章目录 卡尔曼滤波数据融合Python实现C语言实现多个数据如何融合附录&#xff1a;压缩字符串、大小端格式转换压缩字符串浮点数压缩Pac…

docker-hub 无法访问,使用windows魔法拉取docker images再上传到linux docker环境中

云机的服务器是可以docker拉取镜像的&#xff0c;但是本地的虚拟机、物理服务器等网络环境不好的情况&#xff0c;是无法访问docker-hub的&#xff0c;即使更换了docker镜像源国内源也无法使用。 本文章使用 在魔法网络环境下的windows&#xff0c;下载docker images后&#xf…

Python →爬虫实践

爬取研究中心的书目 现在&#xff0c;想要把如下网站中的书目信息爬取出来。 案例一 耶鲁 Publications | Yale Law School 分析网页&#xff0c;如下图所示&#xff0c;需要爬取的页面&#xff0c;标签信息是“<p>”&#xff0c;所以用 itemssoup.find_all("p&…

【Linux学习】【Ubuntu入门】1-4 ubuntu终端操作与shell命令1

1.使用快捷键CtrlAltT打开命令终端&#xff0c;或者单击右键点击… 2.常用shell命令 目录信息查看命令&#xff1a;ls ls -a&#xff1a;显示目录所有文件及文件夹&#xff0c;包括隐藏文件&#xff0c;比如以.开头的 ls -l&#xff1a;显示文件的详细信息 ls -al&#xff1…

WordPress 6.7 “Rollins”发布

每个 WordPress 版本都会向一位在音乐界留下不可磨灭印记的艺术家致敬。WordPress 6.7 的代号为“Rollins”&#xff0c;旨在向传奇爵士萨克斯演奏家桑尼罗林斯致敬。罗林斯是爵士乐界最伟大的即兴演奏家和先驱之一&#xff0c;他以精湛的技术、创新精神和无畏的音乐表达方式影…

ESXi安装【真机和虚拟机】(超详细)

项目简介&#xff1a; ESXi&#xff08;Elastic Sky X Integrated&#xff09;是VMware公司开发的一种裸机虚拟化管理程序&#xff0c;允许用户在单一物理服务器上运行多个虚拟机&#xff08;VM&#xff09;。它直接安装在服务器硬件上&#xff0c;而不是操作系统之上&#xff…

【若依框架】代码生成详细教程,15分钟搭建Springboot+Vue3前后端分离项目,基于Mysql8数据库和Redis5,管理后台前端基于Vue3和Element Plus,开发小程序数据后台

今天我们来借助若依来快速的搭建一个基于springboot的Java管理后台&#xff0c;后台网页使用vue3和 Element Plus来快速搭建。这里我们可以借助若依自动生成Java和vue3代码&#xff0c;这就是若依的强大之处&#xff0c;即便你不会Java和vue开发&#xff0c;只要跟着石头哥也可…

HBuilder(uniapp) 配置android模拟器

HBuilder&#xff08;uniapp&#xff09; 配置android模拟器 选择完成之后&#xff0c;点击ok&#xff0c;再次点击Configure—》AVD Manager

flutter插件:录制系统播放的声音

该插件基于flutter包 flutter_screen_recording 和 github库 SystemAudioCaptureAndroid&#xff0c;实现了在安卓手机上录制系统播放声音的功能&#xff0c;也就是说&#xff0c;只要一个安卓应用没有设置不允许其它应用录制声音&#xff0c;该插件可以录制该应用播放的声音。…