maochaoying 2 years ago
parent
commit
ed02b93e1a
  1. 7
      src/controller/coop.controller.js
  2. 3
      src/router/coop.route.js
  3. 3
      src/service/chicken.service.js
  4. 34
      src/service/coop.service.js
  5. 9
      src/utils/common.js

7
src/controller/coop.controller.js

@ -4,6 +4,7 @@ const {
updateCoop, updateCoop,
getCoopById, getCoopById,
deleteCoop, deleteCoop,
getEmptyCoopList,
} = require("../service/coop.service"); } = require("../service/coop.service");
const Response = require("../utils/response"); const Response = require("../utils/response");
@ -14,6 +15,12 @@ class CoopController {
ctx.body = Response(0, "查询鸡舍列表成功", res); 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) { async create(ctx, next) {
const { coop_name, coop_cage_number, chicken_number, house_id } = const { coop_name, coop_cage_number, chicken_number, house_id } =
ctx.request.body; ctx.request.body;

3
src/router/coop.route.js

@ -10,6 +10,7 @@ const {
update, update,
info, info,
deleteById, deleteById,
emptyCoop,
} = require("../controller/coop.controller"); } = require("../controller/coop.controller");
router.get("/list", auth, list); router.get("/list", auth, list);
@ -22,4 +23,6 @@ router.get("/info", auth, info);
router.post("/delete", auth, deleteById); router.post("/delete", auth, deleteById);
router.get("/empty", auth, emptyCoop);
module.exports = router; module.exports = router;

3
src/service/chicken.service.js

@ -5,7 +5,7 @@ const { getFactoryById } = require("./factory.service");
const { getVarietyById } = require("./variety.service"); const { getVarietyById } = require("./variety.service");
const { getBatchCoopByIds } = require("./coop.service"); const { getBatchCoopByIds } = require("./coop.service");
const { getAccountInfo } = require("./account.service"); const { getAccountInfo } = require("./account.service");
const { Op } = require("sequelize");
const { Op, Sequelize } = require("sequelize");
const { DATE_FILTER } = require("../constant/constant"); const { DATE_FILTER } = require("../constant/constant");
class ChickenService { class ChickenService {
async addChicken( async addChicken(
@ -92,6 +92,7 @@ class ChickenService {
Object.assign(selectObj, { put_time: DATE_FILTER[put_time] }); Object.assign(selectObj, { put_time: DATE_FILTER[put_time] });
const res = await Chicken.findAll({ const res = await Chicken.findAll({
where: selectObj, where: selectObj,
order: [["put_time", "DESC"]],
}); });
// 根据coop_ids进行筛选一次 // 根据coop_ids进行筛选一次
const arr = res.filter((item) => { const arr = res.filter((item) => {

34
src/service/coop.service.js

@ -1,6 +1,7 @@
const { Op } = require("sequelize"); const { Op } = require("sequelize");
const Chicken = require("../model/chicken.model.js"); const Chicken = require("../model/chicken.model.js");
const Coop = require("../model/coop.model"); const Coop = require("../model/coop.model");
const { findDiffArr } = require("../utils/common");
const { getHouseById } = require("./house.service"); const { getHouseById } = require("./house.service");
class CoopService { class CoopService {
async getCoopListById(house_id) { async getCoopListById(house_id) {
@ -95,6 +96,39 @@ class CoopService {
}); });
return res; 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(); module.exports = new CoopService();

9
src/utils/common.js

@ -38,9 +38,18 @@ function getDayLife(out_time, in_time) {
return joinTime; 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 = { module.exports = {
isJsonString, isJsonString,
generateSerialNumber, generateSerialNumber,
haveSame, haveSame,
getDayLife, getDayLife,
findDiffArr,
}; };
Loading…
Cancel
Save