maochaoying 2 years ago
parent
commit
75ef3bbb93
  1. 7
      src/model/chicken.model.js
  2. 11
      src/service/chicken.service.js
  3. 10
      src/service/die.service.js
  4. 4
      src/service/market.service.js
  5. 100
      src/test/someFunc.js
  6. 35
      src/utils/common.js

7
src/model/chicken.model.js

@ -21,6 +21,13 @@ const Chicken = seq.define("chicken_chicken", {
defaultValue: DataTypes.NOW,
comment: "进鸡时间",
},
real_life_init_time: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW,
comment:
"填写了日龄和进鸡时间,从当前时间减去前两者之差的日期,即为真实日龄",
},
variety_id: {
type: DataTypes.INTEGER,
allowNull: false,

11
src/service/chicken.service.js

@ -1,5 +1,10 @@
const Chicken = require("../model/chicken.model");
const { generateSerialNumber, haveSame } = require("../utils/common");
const {
generateSerialNumber,
haveSame,
getTimeLastDate,
getDayLife,
} = require("../utils/common");
const { getHouseById } = require("./house.service");
const { getFactoryById } = require("./factory.service");
const { getVarietyById } = require("./variety.service");
@ -20,6 +25,8 @@ class ChickenService {
log_user_id
) {
const batch_number = generateSerialNumber();
// 生成real_life_init_time
const real_life_init_time = getTimeLastDate(put_time, chicken_day_life);
const res = await Chicken.create({
house_id,
coop_id: coop_id.join(","),
@ -31,6 +38,7 @@ class ChickenService {
factory_id,
log_user_id,
batch_number,
real_life_init_time,
});
return res ? res.dataValues : null;
}
@ -65,6 +73,7 @@ class ChickenService {
someId.factoryName = factoryName;
someId.varietyName = varietyName;
someId.allCoops = allCoops;
someId.day_life = getDayLife(new Date(), someId.real_life_init_time);
return someId;
}
return null;

10
src/service/die.service.js

@ -161,7 +161,10 @@ class DieService {
});
res.dataValues.max_die_number = res.dataValues.chicken_number - dieTotal;
// 默认鸡苗日龄为录入时间-进鸡时间
res.dataValues.day_life = getDayLife(new Date(), res.dataValues.put_time);
res.dataValues.day_life = getDayLife(
new Date(),
res.dataValues.real_life_init_time
);
// 鸡苗厂家/记录人
const factoryInfo = await getFactoryById(res.dataValues.factory_id);
res.dataValues.factoryInfo = factoryInfo;
@ -209,7 +212,10 @@ class DieService {
const factoryInfo = await getFactoryById(chickenInfo.factory_id);
res.dataValues.die_rate =
res.dataValues.die_number / chickenInfo.chicken_number;
res.dataValues.day_life = getDayLife(new Date(), chickenInfo.put_time);
res.dataValues.day_life = getDayLife(
new Date(),
chickenInfo.real_life_init_time
);
res.dataValues.factoryInfo = factoryInfo;
const userInfo = await getAccountInfo(chickenInfo.log_user_id);
res.dataValues.log_user = userInfo.name;

4
src/service/market.service.js

@ -86,7 +86,7 @@ class MarketService {
res.dataValues.username = userInfo.name;
res.dataValues.dayLife = getDayLife(
res.dataValues.out_time,
chickenInfo.put_time
chickenInfo.real_life_init_time
);
return res;
}
@ -110,7 +110,7 @@ class MarketService {
res.dataValues.market_default_number =
res.dataValues.chicken_number - dieTotal;
// 出栏日龄=出栏时间-进鸡时间
res.dataValues.day_life = getDayLife(new Date(), res.put_time);
res.dataValues.day_life = getDayLife(new Date(), res.real_life_init_time);
const varietyInfo = await getVarietyById(res.dataValues.variety_id);
res.dataValues.varietyInfo = varietyInfo;
const userInfo = await getAccountInfo({ id: res.dataValues.log_user_id });

100
src/test/someFunc.js

@ -23,52 +23,56 @@
// console.log(haveSame("2,5".split(","), ["1"]));
const arr = [
{
id: 1,
house_id: 4,
coop_id: 2,
reason_id: 1,
die_number: 222,
},
{
id: 2,
house_id: 4,
coop_id: 2,
reason_id: 1,
die_number: 222,
},
{
id: 3,
house_id: 4,
coop_id: 7,
reason_id: 1,
die_number: 222,
},
];
let temp = [];
arr.map((item, index) => {
if (
temp.every(
(it) => it.house_id != item.house_id || it.coop_id != item.coop_id
)
) {
temp.push(item);
} else {
const real = temp.filter(
(it) => it.house_id == item.house_id && it.coop_id == item.coop_id
);
if (real && real.length > 0) {
real[0].die_number = item.die_number + real[0].die_number;
}
}
});
// const arr = [
// {
// id: 1,
// house_id: 4,
// coop_id: 2,
// reason_id: 1,
// die_number: 222,
// },
// {
// id: 2,
// house_id: 4,
// coop_id: 2,
// reason_id: 1,
// die_number: 222,
// },
// {
// id: 3,
// house_id: 4,
// coop_id: 7,
// reason_id: 1,
// die_number: 222,
// },
// ];
// let temp = [];
// arr.map((item, index) => {
// if (
// temp.every(
// (it) => it.house_id != item.house_id || it.coop_id != item.coop_id
// )
// ) {
// temp.push(item);
// } else {
// const real = temp.filter(
// (it) => it.house_id == item.house_id && it.coop_id == item.coop_id
// );
// if (real && real.length > 0) {
// real[0].die_number = item.die_number + real[0].die_number;
// }
// }
// });
function getDayLife(out_time, in_time) {
// 出栏日龄=出栏时间-进鸡时间
const dateBegin = new Date(in_time);
const dateEnd = new Date(out_time);
var result = dateEnd.getTime() - dateBegin.getTime();
var joinTime = Math.floor(result / (24 * 3600 * 1000));
console.log(joinTime);
}
// function getDayLife(out_time, in_time) {
// // 出栏日龄=出栏时间-进鸡时间
// const dateBegin = new Date(in_time);
// const dateEnd = new Date(out_time);
// var result = dateEnd.getTime() - dateBegin.getTime();
// var joinTime = Math.floor(result / (24 * 3600 * 1000));
// console.log(joinTime);
// }
const { getTimeLastDate } = require("../utils/common");
console.log(getTimeLastDate("2023-03-28 12:12:12", 3));

35
src/utils/common.js

@ -46,10 +46,45 @@ const findDiffArr = (arr1, arr2) => {
return newArr;
};
const formatNumber = (n) => {
n = n.toString();
return n[1] ? n : "0" + n;
};
// 获取当前日期 yyy-mm-dd
const formatDate = (date) => {
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
return [year, month, day].map(formatNumber).join("-");
};
// 获取前n天的日期 last为要求的哪一天,lastDate为哪一天的前n天
const getTimeLastDate = (last, lastDate) => {
last = new Date(last);
const year = last.getFullYear();
const day = last.getDate();
const ti = day - lastDate;
// const month6 = last.getMonth() + 1
// const dayOfWeek = last.getDay() //今天本周的第几天
// 判断是否月初
if (ti <= 0) {
const month = last.getMonth() + 1 - 1;
const d = new Date(year, month, 0);
const dayBig = d.getDate(); //获取当月的所有天数
const ti1 = dayBig + ti;
return [year, month, ti1].map(formatNumber).join("-");
} else {
const month = last.getMonth() + 1;
return [year, month, ti].map(formatNumber).join("-");
}
// return [year, month, day].map(formatNumber).join('-')
};
module.exports = {
isJsonString,
generateSerialNumber,
haveSame,
getDayLife,
findDiffArr,
getTimeLastDate,
};
Loading…
Cancel
Save