rentease-backend-new/models/MeterReading.js

140 lines
3.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const { DataTypes } = require('sequelize');
const sequelize = require('../config/db');
const Room = require('./Room');
const Renter = require('./Renter');
const Rental = require('./Rental');
const Bill = require('./Bill');
const MeterReading = sequelize.define('MeterReading', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
comment: '记录ID'
},
roomId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: Room,
key: 'id'
},
comment: '房间ID'
},
renterId: {
type: DataTypes.INTEGER,
allowNull: true,
references: {
model: Renter,
key: 'id'
},
comment: '租客ID可选'
},
rentalId: {
type: DataTypes.INTEGER,
allowNull: true,
references: {
model: Rental,
key: 'id'
},
comment: '租赁ID可选'
},
meterType: {
type: DataTypes.ENUM('water', 'electricity', 'gas'),
allowNull: false,
comment: '表类型water-水表, electricity-电表, gas-燃气表)'
},
previousReading: {
type: DataTypes.DECIMAL(10, 2),
allowNull: false,
comment: '上期读数'
},
currentReading: {
type: DataTypes.DECIMAL(10, 2),
allowNull: false,
comment: '本期读数'
},
usage: {
type: DataTypes.DECIMAL(10, 2),
allowNull: false,
comment: '用量'
},
unitPrice: {
type: DataTypes.DECIMAL(10, 2),
allowNull: false,
comment: '单价'
},
amount: {
type: DataTypes.DECIMAL(10, 2),
allowNull: false,
comment: '金额'
},
billMonth: {
type: DataTypes.STRING(7),
allowNull: false,
comment: '账单月份格式YYYY-MM'
},
readingDate: {
type: DataTypes.DATEONLY,
allowNull: false,
comment: '抄表日期'
},
billId: {
type: DataTypes.INTEGER,
allowNull: true,
references: {
model: Bill,
key: 'id'
},
comment: '关联账单ID'
},
remark: {
type: DataTypes.TEXT,
allowNull: true,
comment: '备注'
},
createBy: {
type: DataTypes.INTEGER,
allowNull: true,
comment: '创建人ID'
},
createTime: {
type: DataTypes.DATE,
defaultValue: DataTypes.NOW,
comment: '创建时间'
},
updateBy: {
type: DataTypes.INTEGER,
allowNull: true,
comment: '修改人ID'
},
updateTime: {
type: DataTypes.DATE,
defaultValue: DataTypes.NOW,
onUpdate: DataTypes.NOW,
comment: '更新时间'
},
tenantId: {
type: DataTypes.INTEGER,
allowNull: false,
comment: '租户ID'
},
isDeleted: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0,
comment: '删除状态0未删除1已删除'
}
}, {
tableName: 'meter_readings',
timestamps: false
});
// 建立关联
MeterReading.belongsTo(Room, { foreignKey: 'roomId' });
MeterReading.belongsTo(Renter, { foreignKey: 'renterId' });
MeterReading.belongsTo(Rental, { foreignKey: 'rentalId' });
MeterReading.belongsTo(Bill, { foreignKey: 'billId' });
module.exports = MeterReading;