diff --git a/src/model/chicken.model.js b/src/model/chicken.model.js index 3d12504..1dbf718 100644 --- a/src/model/chicken.model.js +++ b/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, diff --git a/src/service/chicken.service.js b/src/service/chicken.service.js index c5eec42..0ab610f 100644 --- a/src/service/chicken.service.js +++ b/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; diff --git a/src/service/die.service.js b/src/service/die.service.js index 9899419..b7c0cea 100644 --- a/src/service/die.service.js +++ b/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; diff --git a/src/service/market.service.js b/src/service/market.service.js index 1bd5665..9e825c6 100644 --- a/src/service/market.service.js +++ b/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 }); diff --git a/src/test/someFunc.js b/src/test/someFunc.js index 33c3df0..1871333 100644 --- a/src/test/someFunc.js +++ b/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)); diff --git a/src/utils/common.js b/src/utils/common.js index ae5904c..0809587 100644 --- a/src/utils/common.js +++ b/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, };