From 2b9bb148c61108dd361d3ce6a9666dab3d185484 Mon Sep 17 00:00:00 2001 From: maochaoying <925670706@qq.com> Date: Mon, 27 Mar 2023 15:52:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=8F=98chicken=E8=A1=A8=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controller/market.controller.js | 7 +++++++ src/model/chicken.model.js | 6 ++++++ src/router/market.route.js | 9 ++++++++- src/service/chicken.service.js | 8 +++++++- src/service/die.service.js | 19 +++++++++++++++++++ src/service/market.service.js | 31 +++++++++++++++++++++++++++++-- 6 files changed, 76 insertions(+), 4 deletions(-) diff --git a/src/controller/market.controller.js b/src/controller/market.controller.js index 20d69fb..d2b69d9 100644 --- a/src/controller/market.controller.js +++ b/src/controller/market.controller.js @@ -2,6 +2,7 @@ const { addNewMarket, getAllMarketList, getMarketByBatchId, + getDefaultMarketInfo, } = require("../service/market.service"); const Response = require("../utils/response"); @@ -35,6 +36,12 @@ class MarketController { const res = await getMarketByBatchId(batch_id); ctx.body = Response(0, "查询出栏详情成功", res); } + + async defaultInfo(ctx, next) { + const { house_id, batch_number } = ctx.request.body; + const res = await getDefaultMarketInfo(house_id, batch_number); + ctx.body = Response(0, "查询出栏初始化信息成功", res); + } } module.exports = new MarketController(); diff --git a/src/model/chicken.model.js b/src/model/chicken.model.js index 13f2b22..3d12504 100644 --- a/src/model/chicken.model.js +++ b/src/model/chicken.model.js @@ -60,6 +60,12 @@ const Chicken = seq.define("chicken_chicken", { unique: true, comment: "批次号", }, + is_marketed: { + type: DataTypes.BOOLEAN, + allowNull: false, + defaultValue: 0, + comment: "0代表 未出栏, 1代表出栏", + }, }); // 强制同步数据库(创建数据表) diff --git a/src/router/market.route.js b/src/router/market.route.js index face129..5ee3168 100644 --- a/src/router/market.route.js +++ b/src/router/market.route.js @@ -3,7 +3,12 @@ const Router = require("koa-router"); const router = new Router({ prefix: "/market" }); const { auth } = require("../middleware/auth.middleware"); -const { add, list, detail } = require("../controller/market.controller"); +const { + add, + list, + detail, + defaultInfo, +} = require("../controller/market.controller"); router.post("/add", auth, add); @@ -11,4 +16,6 @@ router.post("/list", auth, list); router.post("/detail", auth, detail); +router.post("/default", auth, defaultInfo); + module.exports = router; diff --git a/src/service/chicken.service.js b/src/service/chicken.service.js index 3136ab4..615c414 100644 --- a/src/service/chicken.service.js +++ b/src/service/chicken.service.js @@ -36,7 +36,9 @@ class ChickenService { } async getChickenByCoopIdAndHouseId(coop_id, house_id) { - const whereOpt = {}; + const whereOpt = { + is_marketed: 0, + }; coop_id && Object.assign(whereOpt, { coop_id }); house_id && Object.assign(whereOpt, { house_id }); const res = await Chicken.findOne({ @@ -49,6 +51,7 @@ class ChickenService { const res = await Chicken.findOne({ where: { id, + is_marketed: 0, }, }); if (res) { @@ -71,6 +74,7 @@ class ChickenService { const res = await Chicken.findOne({ where: { batch_number, + is_marketed: 0, }, }); return res ? res.dataValues : null; @@ -83,6 +87,7 @@ class ChickenService { house_id ) { let selectObj = { + is_marketed: 0, batch_number: { [Op.like]: `%${batch_number}%`, }, @@ -120,6 +125,7 @@ class ChickenService { const res = await Chicken.findAll({ where: { house_id, + is_marketed: 0, }, }); // 批量拿coopinfo diff --git a/src/service/die.service.js b/src/service/die.service.js index 8887e03..902737d 100644 --- a/src/service/die.service.js +++ b/src/service/die.service.js @@ -105,6 +105,7 @@ class DieService { const res = await Chicken.findOne({ where: { house_id, + is_marketed: 0, coop_id: { [Op.like]: `%${coop_id}%`, }, @@ -135,6 +136,24 @@ class DieService { } return null; } + + async getDieTotal(coop_ids, house_id) { + const res = await Die.findAll({ + where: { + coop_id: { + [Op.in]: coop_ids, + }, + house_id, + }, + }); + let total = 0; + res + .map((item) => item.dataValues) + .map((it) => { + total += it.die_number; + }); + return total; + } } module.exports = new DieService(); diff --git a/src/service/market.service.js b/src/service/market.service.js index 86f59c0..6073ed8 100644 --- a/src/service/market.service.js +++ b/src/service/market.service.js @@ -1,8 +1,10 @@ const Market = require("../model/market.model"); +const Chicken = require("../model/chicken.model"); const { getChickenByBatchId } = require("./chicken.service"); const { getBatchCoopByIds } = require("./coop.service"); const { getVarietyById } = require("./variety.service"); const { getAccountInfo } = require("./account.service"); +const { getDieTotal } = require("./die.service"); const { getDayLife } = require("../utils/common"); const { Op } = require("sequelize"); const { DATE_FILTER } = require("../constant/constant"); @@ -40,7 +42,6 @@ class MarketService { const arr = res?.map((item) => item.dataValues); const p = arr.map(async (item) => { const childrenInfo = await getChickenByBatchId(item.batch_id); - console.log(childrenInfo); const coop_ids = childrenInfo.coop_id.split(","); // // 根据coop_id批量查询 const coopInfo = await getBatchCoopByIds(coop_ids); @@ -59,7 +60,6 @@ class MarketService { }); // 根据当前的batch_id查询基本信息 const chickenInfo = await getChickenByBatchId(batch_id); - console.log(chickenInfo); const log_user_id = chickenInfo.log_user_id; const variety_id = chickenInfo.variety_id; const userInfo = await getAccountInfo({ id: log_user_id }); @@ -79,6 +79,33 @@ class MarketService { } return null; } + + async getDefaultMarketInfo(house_id, batch_number) { + const res = await Chicken.findOne({ + where: { + is_marketed: 0, + house_id, + batch_number, + }, + }); + if (res) { + const coop_ids = res.dataValues.coop_id.split(","); + const coopInfos = await getBatchCoopByIds(coop_ids); + res.dataValues.coopInfos = coopInfos; + // 出栏数量默认等于“进鸡数量-死淘数量” + const dieTotal = await getDieTotal(coop_ids, house_id); + res.dataValues.market_default_number = + res.dataValues.chicken_number - dieTotal; + // 出栏日龄=出栏时间-进鸡时间 + res.dataValues.day_life = getDayLife(new Date(), res.put_time); + const varietyInfo = await getVarietyById(res.dataValues.variety_id); + res.dataValues.varietyInfo = varietyInfo; + const userInfo = await getAccountInfo({ id: res.dataValues.log_user_id }); + res.dataValues.log_user = userInfo.name; + return res.dataValues; + } + return null; + } } module.exports = new MarketService();