石墨消解仪后端用nodejs编写,与嵌入式端交互和前端交互均用ws
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
3.9 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. const Chicken = require("../model/chicken.model");
  2. const { generateSerialNumber, haveSame } = require("../utils/common");
  3. const { getHouseById } = require("./house.service");
  4. const { getFactoryById } = require("./factory.service");
  5. const { getVarietyById } = require("./variety.service");
  6. const { getBatchCoopByIds } = require("./coop.service");
  7. const { getAccountInfo } = require("./account.service");
  8. const { Op } = require("sequelize");
  9. const { DATE_FILTER } = require("../constant/constant");
  10. class ChickenService {
  11. async addChicken(
  12. house_id,
  13. coop_id,
  14. put_time,
  15. variety_id,
  16. chicken_number,
  17. chicken_day_life,
  18. chicken_counter_balance,
  19. factory_id,
  20. log_user_id
  21. ) {
  22. const batch_number = generateSerialNumber();
  23. const res = await Chicken.create({
  24. house_id,
  25. coop_id: coop_id.join(","),
  26. put_time,
  27. variety_id,
  28. chicken_number,
  29. chicken_day_life,
  30. chicken_counter_balance,
  31. factory_id,
  32. log_user_id,
  33. batch_number,
  34. });
  35. return res ? res.dataValues : null;
  36. }
  37. async getChickenByCoopIdAndHouseId(coop_id, house_id) {
  38. const whereOpt = {};
  39. coop_id && Object.assign(whereOpt, { coop_id });
  40. house_id && Object.assign(whereOpt, { house_id });
  41. const res = await Chicken.findOne({
  42. where: whereOpt,
  43. });
  44. return res ? res.dataValues : null;
  45. }
  46. async getChickenInfoById(id, log_name) {
  47. const res = await Chicken.findOne({
  48. where: {
  49. id,
  50. },
  51. });
  52. if (res) {
  53. const someId = res.dataValues;
  54. const houseInfo = await getHouseById(someId.house_id);
  55. const factoryName = await getFactoryById(someId.factory_id);
  56. const varietyName = await getVarietyById(someId.variety_id);
  57. const allCoops = await getBatchCoopByIds(someId.coop_id.split(","));
  58. someId.houseName = houseInfo.house_name;
  59. someId.log_name = log_name;
  60. someId.factoryName = factoryName;
  61. someId.varietyName = varietyName;
  62. someId.allCoops = allCoops;
  63. return someId;
  64. }
  65. return null;
  66. }
  67. async getChickenByBatchId(batch_number) {
  68. const res = await Chicken.findOne({
  69. where: {
  70. batch_number,
  71. },
  72. });
  73. return res ? res.dataValues : null;
  74. }
  75. async getAllChickenInfo(
  76. batch_number = "",
  77. coop_ids = [],
  78. put_time = "0",
  79. house_id
  80. ) {
  81. let selectObj = {
  82. batch_number: {
  83. [Op.like]: `%${batch_number}%`,
  84. },
  85. };
  86. house_id && Object.assign(selectObj, { house_id });
  87. DATE_FILTER[put_time] &&
  88. Object.assign(selectObj, { put_time: DATE_FILTER[put_time] });
  89. const res = await Chicken.findAll({
  90. where: selectObj,
  91. });
  92. // 根据coop_ids进行筛选一次
  93. const arr = res.filter((item) => {
  94. if (coop_ids.length > 0) {
  95. if (haveSame(item.coop_id.split(","), coop_ids)) {
  96. return true;
  97. }
  98. } else {
  99. return true;
  100. }
  101. return false;
  102. });
  103. const p = arr.map(async (item) => {
  104. const varietyName = await getVarietyById(item.variety_id);
  105. const allCoops = await getBatchCoopByIds(item.coop_id.split(","));
  106. item.dataValues.varietyName = varietyName;
  107. item.dataValues.allCoops = allCoops;
  108. return item;
  109. });
  110. const real = Promise.all(p);
  111. return real;
  112. }
  113. async getChickenInfoByHouseId(house_id) {
  114. const res = await Chicken.findAll({
  115. where: {
  116. house_id,
  117. },
  118. });
  119. // 批量拿coopinfo
  120. const arr = res?.map((item) => item.dataValues);
  121. const p = arr.map(async (item) => {
  122. const varietyName = await getVarietyById(item.variety_id);
  123. const allCoops = await getBatchCoopByIds(item.coop_id.split(","));
  124. const userinfo = await getAccountInfo({ id: item.log_user_id });
  125. item.varietyName = varietyName;
  126. item.allCoops = allCoops;
  127. item.username = userinfo.name;
  128. return item;
  129. });
  130. const real = await Promise.all(p);
  131. return real;
  132. }
  133. }
  134. module.exports = new ChickenService();