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

  1. package models
  2. import (
  3. "errors"
  4. "lapp_-wy/db"
  5. "lapp_-wy/utils"
  6. "time"
  7. )
  8. type Otherchargetab struct {
  9. Cid int `json:"cid" xorm:"not null pk INT(4)"`
  10. Otherid int `json:"otherid" xorm:"not null pk INT(10)"`
  11. Contact string `json:"contact" xorm:"VARCHAR(32)"`
  12. Phone string `json:"phone" xorm:"VARCHAR(20)"`
  13. Serialnumber string `json:"serialnumber" xorm:"VARCHAR(32)"`
  14. Chargeway string `json:"chargeway" xorm:"VARCHAR(100)"`
  15. Category string `json:"category" xorm:"VARCHAR(32)"`
  16. Chargestartdate string `json:"chargestartdate" xorm:"VARCHAR(20)"`
  17. Chargeenddate string `json:"chargeenddate" xorm:"VARCHAR(20)"`
  18. ChargeMoney float64 `json:"charge_money" xorm:"DECIMAL(10,2)"`
  19. Chargetime string `json:"chargetime" xorm:"VARCHAR(20)"`
  20. Chargeby string `json:"chargeby" xorm:"VARCHAR(20)"`
  21. Remark string `json:"remark" xorm:"VARCHAR(255)"`
  22. Createtime string `json:"createtime" xorm:"VARCHAR(20)"`
  23. }
  24. func (t *Otherchargetab) TableName() string {
  25. return "otherchargetab"
  26. }
  27. //增
  28. func (t *Otherchargetab) Add() error {
  29. engine := db.MasterEngine()
  30. session := engine.NewSession()
  31. defer session.Close()
  32. // add Begin() before any action
  33. err := session.Begin()
  34. if err != nil {
  35. session.Rollback()
  36. return err
  37. }
  38. //生成流水号
  39. me := new(Snrtab)
  40. me.Cid = t.Cid
  41. Otherid, err := me.GetNextSnr("Otherid")
  42. if err != nil {
  43. session.Rollback()
  44. return err
  45. }
  46. //生成流水号
  47. numId := new(Snrtab)
  48. numId.Cid = t.Cid
  49. serialnumber, err := numId.GetNextSnr("Serialnumber")
  50. if err != nil {
  51. session.Rollback()
  52. return err
  53. }
  54. t.Serialnumber = serialnumber
  55. t.Otherid = utils.ValueToInt(Otherid, 0)
  56. t.Chargetime = utils.TimeFormat(time.Now(), "yyyy-MM-dd")
  57. _, err = session.Table("otherchargetab").Insert(t)
  58. if err != nil {
  59. session.Rollback()
  60. return err
  61. }
  62. //生成流水号
  63. chargenr := new(Snrtab)
  64. chargenr.Cid = t.Cid
  65. cnr, err := chargenr.GetNextSnr("Chargenr")
  66. if err != nil {
  67. session.Rollback()
  68. return err
  69. }
  70. //添加记录
  71. charge := new(Chargetab)
  72. charge.Cid = t.Cid
  73. charge.Chargetype = 4
  74. charge.Info = t.Remark
  75. charge.Createtime = t.Createtime
  76. charge.Lastmodifytime = t.Createtime
  77. charge.Chargableexpense = t.ChargeMoney
  78. charge.Chargedexpense = t.ChargeMoney
  79. charge.Chargetime = t.Chargetime
  80. charge.Chargeway = t.Chargeway
  81. charge.Serialnumber = serialnumber
  82. charge.Chargenr = utils.ValueToInt(cnr, 0)
  83. charge.Chargestartdate = t.Chargestartdate
  84. charge.Chargeenddate = t.Chargeenddate
  85. _, err = session.Table("chargetab").Insert(charge)
  86. if err != nil {
  87. session.Rollback()
  88. return err
  89. }
  90. result := ChargeShareTheMonth(session, charge.Cid, charge.Chargenr, charge.Chargestartdate, charge.Chargeenddate, charge.Chargedexpense)
  91. if !result {
  92. session.Rollback()
  93. return errors.New("分摊费用计算错误")
  94. }
  95. err = session.Commit()
  96. if err != nil {
  97. return err
  98. }
  99. return nil
  100. }
  101. //查
  102. func (t *Otherchargetab) SelectOne() (data Otherchargetab,err error) {
  103. e := db.MasterEngine()
  104. query := e.Table("otherchargetab").Where("cid = ? ", t.Cid)
  105. if !utils.ValueIsEmpty(t.Remark) {
  106. query = query.And("remark = ?", t.Remark)
  107. }
  108. if !utils.ValueIsEmpty(t.Contact) {
  109. query = query.And("contact = ?", t.Contact)
  110. }
  111. if !utils.ValueIsEmpty(t.Category) {
  112. query = query.And("category = ?", t.Category)
  113. }
  114. _, err = query.Desc("createtime").Get(&data)
  115. if err != nil {
  116. return data, err
  117. }
  118. return data, nil
  119. }
  120. //分页
  121. func (t *Otherchargetab) GetPage(pageSize int, pageIndex int) ([]Otherchargetab, int, error) {
  122. data := make([]Otherchargetab, 0)
  123. e := db.MasterEngine()
  124. query := e.Table("otherchargetab").Where("cid = ? ", t.Cid)
  125. table := e.Table("otherchargetab").Where("cid = ? ", t.Cid)
  126. if !utils.ValueIsEmpty(t.Remark) {
  127. descr := "%" + t.Remark + "%"
  128. query = query.And("remark like ?", descr)
  129. table = table.And("remark like ?", descr)
  130. }
  131. if !utils.ValueIsEmpty(t.Contact) {
  132. query = query.And("contact = ?", t.Contact)
  133. table = table.And("contact = ?", t.Contact)
  134. }
  135. Offset := (pageIndex - 1) * pageSize
  136. err := query.Limit(pageSize, Offset).Desc("createtime").Find(&data)
  137. pcount := new(Otherchargetab)
  138. count, err := table.Count(pcount)
  139. if err != nil {
  140. return data, 0, err
  141. }
  142. return data, int(count), nil
  143. }