diff --git a/src/controller/coop.controller.js b/src/controller/coop.controller.js index 744c15e..7c825dc 100644 --- a/src/controller/coop.controller.js +++ b/src/controller/coop.controller.js @@ -4,6 +4,7 @@ const { updateCoop, getCoopById, deleteCoop, + getEmptyCoopList, } = require("../service/coop.service"); const Response = require("../utils/response"); @@ -14,6 +15,12 @@ class CoopController { ctx.body = Response(0, "查询鸡舍列表成功", res); } + async emptyCoop(ctx, next) { + const { house_id } = ctx.request.query; + const res = await getEmptyCoopList(house_id); + ctx.body = Response(0, "查询空闲鸡舍列表成功", res); + } + async create(ctx, next) { const { coop_name, coop_cage_number, chicken_number, house_id } = ctx.request.body; diff --git a/src/router/coop.route.js b/src/router/coop.route.js index 47efab9..c580be1 100644 --- a/src/router/coop.route.js +++ b/src/router/coop.route.js @@ -10,6 +10,7 @@ const { update, info, deleteById, + emptyCoop, } = require("../controller/coop.controller"); router.get("/list", auth, list); @@ -22,4 +23,6 @@ router.get("/info", auth, info); router.post("/delete", auth, deleteById); +router.get("/empty", auth, emptyCoop); + module.exports = router; diff --git a/src/service/chicken.service.js b/src/service/chicken.service.js index ff5a18b..3136ab4 100644 --- a/src/service/chicken.service.js +++ b/src/service/chicken.service.js @@ -5,7 +5,7 @@ const { getFactoryById } = require("./factory.service"); const { getVarietyById } = require("./variety.service"); const { getBatchCoopByIds } = require("./coop.service"); const { getAccountInfo } = require("./account.service"); -const { Op } = require("sequelize"); +const { Op, Sequelize } = require("sequelize"); const { DATE_FILTER } = require("../constant/constant"); class ChickenService { async addChicken( @@ -92,6 +92,7 @@ class ChickenService { Object.assign(selectObj, { put_time: DATE_FILTER[put_time] }); const res = await Chicken.findAll({ where: selectObj, + order: [["put_time", "DESC"]], }); // 根据coop_ids进行筛选一次 const arr = res.filter((item) => { diff --git a/src/service/coop.service.js b/src/service/coop.service.js index 7518c4c..59910fd 100644 --- a/src/service/coop.service.js +++ b/src/service/coop.service.js @@ -1,6 +1,7 @@ const { Op } = require("sequelize"); const Chicken = require("../model/chicken.model.js"); const Coop = require("../model/coop.model"); +const { findDiffArr } = require("../utils/common"); const { getHouseById } = require("./house.service"); class CoopService { async getCoopListById(house_id) { @@ -95,6 +96,39 @@ class CoopService { }); return res; } + + // 查询空闲鸡舍 + // 没有进鸡记录的 + async getEmptyCoopList(house_id) { + const res = await Coop.findAll({ + where: { + house_id, + }, + }); + const arr = res.map((item) => item.dataValues); + const coopidArr = res?.map((item) => item.dataValues.id); + // 筛选arr + const chickenList = await Chicken.findAll({ + where: { + house_id, + }, + }); + const chickArr = chickenList.map((item) => item.dataValues.coop_id); + // 找到两个数组的非交集 + const flat = chickArr + .map((item) => item.split(",")) + .flat() + .map((item) => parseInt(item)); + const resIds = findDiffArr(coopidArr, flat); + let realRes = []; + arr.map((item) => { + if (resIds.includes(item.id)) { + realRes.push(item); + } + }); + // realRes 即为空闲 鸡舍 + return realRes; + } } module.exports = new CoopService(); diff --git a/src/utils/common.js b/src/utils/common.js index 87ca9d8..ae5904c 100644 --- a/src/utils/common.js +++ b/src/utils/common.js @@ -38,9 +38,18 @@ function getDayLife(out_time, in_time) { return joinTime; } +const findDiffArr = (arr1, arr2) => { + const arr = [...arr1, ...arr2]; + const newArr = arr.filter((t) => { + return !(arr1.includes(t) && arr2.includes(t)); + }); + return newArr; +}; + module.exports = { isJsonString, generateSerialNumber, haveSame, getDayLife, + findDiffArr, };