const stock = await this.repoStock.find({ where: { goods: { sort: EType.noCode }, }, select: ['id', 'shopID', 'goodsID'] }) let where: {} for (let tmp of stock) { where = { order: { shopID: tmp.id }, goodsID: tmp.goodsID, } //查询订单制作数量 const makeNum = sumBy(await this.repoOrderDetail.find({ where }), 'makeNum') //查询门店签收 const goodCarryInfo = await this.repoGoodCarryInfo.find({ where: { goodsID: tmp.goodsID, stockID: tmp.id } }) let amount = sumBy(goodCarryInfo, 'signForCount') //计算报损数量 let breakageNum = amount - makeNum - tmp.num - tmp.readyOut this.repoBreakage.save({ goodsID: tmp.goodsID, cause: ECause.cause, shopID: tmp.shopID, num: breakageNum }) //计算门店库存 let stockNum = amount - makeNum - tmp.readyOut - breakageNum this.repoStock.update({ id: tmp.id }, { num: stockNum }) } return stock
时间: 2023-03-30 22:00:55 浏览: 62
这是一段 TypeScript 代码,用于查询商品库存并更新库存信息。它首先查询所有未编码的商品库存,然后对每个库存进行以下操作:查询订单制作数量,查询门店签收数量,计算报损数量并保存报损记录,计算门店库存并更新库存信息。最后返回所有库存信息。
相关问题
``` const browser = await chromium.launch(); ```
`const browser = await chromium.launch();`是使用Puppeteer库中的`chromium`模块启动一个Chromium浏览器实例。
该代码需要在Node.js环境中运行,并且需要安装Puppeteer库。在运行该代码之前,需要先执行以下命令安装Puppeteer库:
```bash
npm install puppeteer
```
修复后的代码如下:
```javascript
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.example.com');
// Do something...
await browser.close();
})();
```
该代码通过调用`puppeteer`模块启动一个浏览器实例,打开一个新页面,执行一些操作,最后关闭浏览器。其中的`https://www.example.com`可以替换成你想要打开的网址。
解释一下async classQueryAll() { const { app, ctx } = this; const Op = app.Sequelize.Op; const res = await ctx.model.Sys.Class.findAll({ where:{ upt_act: { [Op.ne]: 'D' } } })
这是一个异步函数,名为`classQueryAll()`。
在函数内部,首先解构了`this.app`和`this.ctx`,分别表示当前应用和请求上下文。
然后,通过`this.app.Sequelize.Op`获取Sequelize操作符对象,用于构建查询条件中的操作符。
接着,使用`ctx.model.Sys.Class.findAll()`方法查询数据库中`Sys.Class`表的所有记录。查询条件是`upt_act`不等于`D`,即查找未被删除的记录。
最后,使用`await`关键字等待查询结果,将结果赋值给`res`变量。查询结果是一个记录数组。