From 2365fa5db6a43733e88707b46aa0428f35ba370a Mon Sep 17 00:00:00 2001 From: maochaoying <925670706@qq.com> Date: Tue, 28 Mar 2023 15:11:06 +0800 Subject: [PATCH] 123 --- src/controller/overview.controller.js | 12 ++++++++++ src/router/overview.route.js | 10 ++++++++ src/service/coop.service.js | 9 +++++++ src/service/overview.service.js | 44 +++++++++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 src/controller/overview.controller.js create mode 100644 src/router/overview.route.js create mode 100644 src/service/overview.service.js diff --git a/src/controller/overview.controller.js b/src/controller/overview.controller.js new file mode 100644 index 0000000..276673d --- /dev/null +++ b/src/controller/overview.controller.js @@ -0,0 +1,12 @@ +const { getAllOverViewList } = require("../service/overview.service"); +const Response = require("../utils/response"); + +class OverviewController { + async list(ctx, next) { + const { house_id } = ctx.request.body; + const res = await getAllOverViewList(house_id); + ctx.body = Response(0, "获取总览列表数据成功", res); + } +} + +module.exports = new OverviewController(); diff --git a/src/router/overview.route.js b/src/router/overview.route.js new file mode 100644 index 0000000..0cb36bc --- /dev/null +++ b/src/router/overview.route.js @@ -0,0 +1,10 @@ +const Router = require("koa-router"); + +const router = new Router({ prefix: "/overview" }); + +const { auth } = require("../middleware/auth.middleware"); +const { list } = require("../controller/overview.controller"); + +router.post("/list", auth, list); + +module.exports = router; diff --git a/src/service/coop.service.js b/src/service/coop.service.js index c4e9102..82cbb4a 100644 --- a/src/service/coop.service.js +++ b/src/service/coop.service.js @@ -131,6 +131,15 @@ class CoopService { // realRes 即为空闲 鸡舍 return realRes; } + + async getCoopNumbyHouseId(house_id) { + const res = Coop.count({ + where: { + house_id, + }, + }); + return res; + } } module.exports = new CoopService(); diff --git a/src/service/overview.service.js b/src/service/overview.service.js new file mode 100644 index 0000000..2b527b2 --- /dev/null +++ b/src/service/overview.service.js @@ -0,0 +1,44 @@ +const Chicken = require("../model/chicken.model"); +const { getDayLife } = require("../utils/common"); +const { getDieTotal } = require("./die.service"); +const { + getBatchCoopByIds, + getEmptyCoopList, + getCoopNumbyHouseId, +} = require("./coop.service"); +class OverviewService { + async getAllOverViewList(house_id) { + const res = await Chicken.findAll({ + where: { + house_id, + is_marketed: 0, + }, + }); + const arr = res?.map((item) => item.dataValues); + const p = arr.map(async (item) => { + const ids = item.coop_id.split(","); + const allCoops = await getBatchCoopByIds(ids); + item.allCoops = allCoops + .map((item) => { + return item.coop_name; + }) + .join(","); + // 需要减去死淘 + const dieNumber = await getDieTotal(ids, house_id); + item.now_number = item.chicken_number - dieNumber; + item.day_life = getDayLife(new Date(), item.real_life_init_time); + return item; + }); + const result = await Promise.all(p); + const emptyCoop = await getEmptyCoopList(house_id); + const totalCount = await getCoopNumbyHouseId(house_id); + const hasCoopCount = totalCount - (emptyCoop?.length || 0); + const real = [...result, ...emptyCoop]; + return { + list: real, + coopNum: hasCoopCount, + }; + } +} + +module.exports = new OverviewService();