沈阳玫苑物业管理后端
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.

153 lines
4.2 KiB

package models
import (
"errors"
"lapp_-wy/db"
"lapp_-wy/utils"
"time"
)
type Otherchargetab struct {
Cid int `json:"cid" xorm:"not null pk INT(4)"`
Otherid int `json:"otherid" xorm:"not null pk INT(10)"`
Contact string `json:"contact" xorm:"VARCHAR(32)"`
Phone string `json:"phone" xorm:"VARCHAR(20)"`
Serialnumber string `json:"serialnumber" xorm:"VARCHAR(32)"`
Chargeway string `json:"chargeway" xorm:"VARCHAR(100)"`
Category string `json:"category" xorm:"VARCHAR(32)"`
Chargestartdate string `json:"chargestartdate" xorm:"VARCHAR(20)"`
Chargeenddate string `json:"chargeenddate" xorm:"VARCHAR(20)"`
ChargeMoney float64 `json:"charge_money" xorm:"DECIMAL(10,2)"`
Chargetime string `json:"chargetime" xorm:"VARCHAR(20)"`
Chargeby string `json:"chargeby" xorm:"VARCHAR(20)"`
Remark string `json:"remark" xorm:"VARCHAR(255)"`
Createtime string `json:"createtime" xorm:"VARCHAR(20)"`
}
func (t *Otherchargetab) TableName() string {
return "otherchargetab"
}
//增
func (t *Otherchargetab) Add() error {
engine := db.MasterEngine()
session := engine.NewSession()
defer session.Close()
// add Begin() before any action
err := session.Begin()
if err != nil {
session.Rollback()
return err
}
//生成流水号
me := new(Snrtab)
me.Cid = t.Cid
Otherid, err := me.GetNextSnr("Otherid")
if err != nil {
session.Rollback()
return err
}
//生成流水号
numId := new(Snrtab)
numId.Cid = t.Cid
serialnumber, err := numId.GetNextSnr("Serialnumber")
if err != nil {
session.Rollback()
return err
}
t.Serialnumber = serialnumber
t.Otherid = utils.ValueToInt(Otherid, 0)
t.Chargetime = utils.TimeFormat(time.Now(), "yyyy-MM-dd")
_, err = session.Table("otherchargetab").Insert(t)
if err != nil {
session.Rollback()
return err
}
//生成流水号
chargenr := new(Snrtab)
chargenr.Cid = t.Cid
cnr, err := chargenr.GetNextSnr("Chargenr")
if err != nil {
session.Rollback()
return err
}
//添加记录
charge := new(Chargetab)
charge.Cid = t.Cid
charge.Chargetype = 4
charge.Info = t.Remark
charge.Createtime = t.Createtime
charge.Lastmodifytime = t.Createtime
charge.Chargableexpense = t.ChargeMoney
charge.Chargedexpense = t.ChargeMoney
charge.Chargetime = t.Chargetime
charge.Chargeway = t.Chargeway
charge.Serialnumber = serialnumber
charge.Chargenr = utils.ValueToInt(cnr, 0)
charge.Chargestartdate = t.Chargestartdate
charge.Chargeenddate = t.Chargeenddate
_, err = session.Table("chargetab").Insert(charge)
if err != nil {
session.Rollback()
return err
}
result := ChargeShareTheMonth(session, charge.Cid, charge.Chargenr, charge.Chargestartdate, charge.Chargeenddate, charge.Chargedexpense)
if !result {
session.Rollback()
return errors.New("分摊费用计算错误")
}
err = session.Commit()
if err != nil {
return err
}
return nil
}
//查
func (t *Otherchargetab) SelectOne() (data Otherchargetab,err error) {
e := db.MasterEngine()
query := e.Table("otherchargetab").Where("cid = ? ", t.Cid)
if !utils.ValueIsEmpty(t.Remark) {
query = query.And("remark = ?", t.Remark)
}
if !utils.ValueIsEmpty(t.Contact) {
query = query.And("contact = ?", t.Contact)
}
if !utils.ValueIsEmpty(t.Category) {
query = query.And("category = ?", t.Category)
}
_, err = query.Desc("createtime").Get(&data)
if err != nil {
return data, err
}
return data, nil
}
//分页
func (t *Otherchargetab) GetPage(pageSize int, pageIndex int) ([]Otherchargetab, int, error) {
data := make([]Otherchargetab, 0)
e := db.MasterEngine()
query := e.Table("otherchargetab").Where("cid = ? ", t.Cid)
table := e.Table("otherchargetab").Where("cid = ? ", t.Cid)
if !utils.ValueIsEmpty(t.Remark) {
descr := "%" + t.Remark + "%"
query = query.And("remark like ?", descr)
table = table.And("remark like ?", descr)
}
if !utils.ValueIsEmpty(t.Contact) {
query = query.And("contact = ?", t.Contact)
table = table.And("contact = ?", t.Contact)
}
Offset := (pageIndex - 1) * pageSize
err := query.Limit(pageSize, Offset).Desc("createtime").Find(&data)
pcount := new(Otherchargetab)
count, err := table.Count(pcount)
if err != nil {
return data, 0, err
}
return data, int(count), nil
}