Browse Source

新增GetChargeArrearageData方法 用于chargetab/listpage接口 修改GetChargeTypeData方法

pull/2/head
zhangxin 4 years ago
parent
commit
9a0d478aad
1 changed files with 128 additions and 16 deletions
  1. +128
    -16
      web/models/chargetab.go

+ 128
- 16
web/models/chargetab.go View File

@ -9,7 +9,7 @@ import (
"lapp_-wy/db"
"lapp_-wy/utils"
"lapp_-wy/web/middleware/glog"
"lapp_-wy/web/models/response"
"math"
"strings"
"time"
"xorm.io/core"
@ -37,6 +37,32 @@ type Chargetab struct {
Lastmodifyby string `json:"lastmodifyby" xorm:"VARCHAR(20)"`
}
type ChargeArrearage struct {
*Chargetab
Arrearage float64 `json:"arrearage"`
ArrearageDate string `json:"arrearage_date"`
}
type ChargeTypeResponse struct {
Cid int `json:"cid"`
Court string `json:"court"`
ChargeWay string `json:"charge_way"`
ChargeCount float64 `json:"charge_count"`
Items []*Chargetab `json:"items"`
Total int64 `json:"total"`
TotalPage int `json:"total_page"`
CurrentPage int `json:"current_page"`
}
type ChargeArrearageResponse struct {
Cid int `json:"cid"`
Court string `json:"court"`
Items []*ChargeArrearage `json:"items"`
Total int64 `json:"total"`
TotalPage int `json:"total_page"`
CurrentPage int `json:"current_page"`
}
func (t *Chargetab) TableName() string {
return "chargetab"
}
@ -1577,8 +1603,8 @@ func (t *Chargetab) Del() error {
}
// 按日期获取指定缴费类型的缴费额
func (t *Chargetab) GetChargeTypeStatisticData(cid int, chargeType int, start, end string) (result *response.ChargeTypeStatisticResponse, err error) {
result = new(response.ChargeTypeStatisticResponse)
func (t *Chargetab) GetChargeTypeData(cid int, chargeWay string, date string, pageIndex, pageSize int) (result *ChargeTypeResponse, err error) {
result = new(ChargeTypeResponse)
engine := db.MasterEngine()
var court Courttab
exist, err := engine.Table(court.TableName()).ID(cid).Get(&court)
@ -1588,27 +1614,113 @@ func (t *Chargetab) GetChargeTypeStatisticData(cid int, chargeType int, start, e
if !exist {
return result, errors.New("data not exist")
}
var chargeTypeLi []int64
// 若使用默认chargeType 则搜索表中所有的chargeType
if chargeType == 0 {
err = engine.Table(t.TableName()).Cols("chargetype").Distinct().Find(&chargeTypeLi)
var totalMoney float64
// 扫码包含 微信 支付宝 和 扫码
if chargeWay == "扫码" {
totalMoney, err = engine.Table(t.TableName()).Where(`cid = ? and (chargeway = "扫码" or chargeway = "微信" or chargeway = "支付宝") and chargetime = ?`, cid, date).Sum(t, "chargableexpense")
} else {
totalMoney, err = engine.Table(t.TableName()).Where("cid = ? and chargeway = ? and chargetime = ?", cid, chargeWay, date).Sum(t, "chargableexpense")
}
if err != nil {
fmt.Println("error here1:", err)
return nil, err
}
offset := (pageIndex - 1) * pageSize
var count int64
var chargeLi []*Chargetab
if chargeWay == "扫码" {
err = engine.Table(t.TableName()).Where("cid = ? and (chargeway = \"扫码\" or chargeway = \"微信\" or chargeway = \"支付宝\") and chargetime = ?", cid, date).Limit(pageSize, offset).Find(&chargeLi)
if err != nil {
return nil, err
}
} else {
chargeTypeLi = append(chargeTypeLi, int64(chargeType))
}
for _, chargeType := range chargeTypeLi {
var statisticData response.ChargeTypeStatisticDate
count, err := engine.Table(t.TableName()).Where("chargetime >= ? and chargetime <= ? and cid = ? and chargetype = ?", start, end, cid, chargeType).Sum(t, "chargableexpense")
count, err = engine.Table(t.TableName()).Where("cid = ? and (chargeway = \"扫码\" or chargeway = \"微信\" or chargeway = \"支付宝\") and chargetime = ?", cid, date).Count()
if err != nil {
fmt.Println("error:", err)
return nil, err
}
statisticData.Type = chargeType
statisticData.Count = count
result.Items = append(result.Items, &statisticData)
} else {
err = engine.Table(t.TableName()).Where("cid = ? and chargeway = ? and chargetime = ?", cid, chargeWay, date).Limit(pageSize, offset).Find(&chargeLi)
count, err = engine.Table(t.TableName()).Where("cid = ? and chargeway = ? and chargetime = ?", cid, chargeWay, date).Count()
}
if err != nil {
return nil, err
}
result.Cid = cid
result.Court = court.Descr
result.ChargeCount = totalMoney
result.ChargeWay = chargeWay
result.Items = chargeLi
result.Total = count
result.TotalPage = int(math.Ceil(float64(result.Total) / float64(pageSize)))
result.CurrentPage = pageIndex
return result, err
}
// 缴费台账接口
func (t *Chargetab) GetChargeArrearageData(cid int, pageIndex, pageSize int, year int, arrearageDate string, selectType string, chargeType int, buildingId string, propertyId string) (result *ChargeArrearageResponse, err error) {
result = new(ChargeArrearageResponse)
engine := db.MasterEngine()
var court Courttab
exist, err := engine.Table(court.TableName()).ID(cid).Get(&court)
if err != nil {
return result, err
}
if !exist {
return result, errors.New("data not exist")
}
var chargeLi []*Chargetab
query := engine.Table(t.TableName())
table := engine.Table(t.TableName())
// 若搜索楼栋id则与物业表连表
if !utils.ValueIsEmpty(buildingId) {
query = query.Join("LEFT", "propertytab", "propertytab.propertyid = chargetab.propertyid and propertytab.cid = chargetab.cid").Where("chargetab.cid = ?", cid).And("propertytab.buildingid = ?", buildingId)
table = table.Join("LEFT", "propertytab", "propertytab.propertyid = chargetab.propertyid and propertytab.cid = chargetab.cid").Where("chargetab.cid = ?", cid).And("propertytab.buildingid = ?", buildingId)
}
// arrearage 陈欠 current 当年
if selectType == "arrearage" {
query = query.Where("chargetab.chargetime <= ?", arrearageDate)
table = table.Where("chargetab.chargetime <= ?", arrearageDate)
} else if selectType == "current" {
query = query.Where("chargetab.chargetime > ?", arrearageDate)
table = table.Where("chargetab.chargetime > ?", arrearageDate)
}
if chargeType != 0 {
query = query.And("chargetab.chargetype = ?", chargeType)
table = table.And("chargetab.chargetype = ?", chargeType)
}
if !utils.ValueIsEmpty(propertyId) {
query = query.And("chargetab.propertyid = ?", propertyId)
table = table.And("chargetab.propertyid = ?", propertyId)
}
offset := pageSize * (pageIndex - 1)
err = query.Limit(pageSize, offset).Find(&chargeLi)
if err != nil {
return nil, err
}
count, err := table.Count()
if err != nil {
return nil, err
}
// 在chargetab上拼接两个字段 一个陈欠日期 一个陈欠金额
var chargeArrearageLi []*ChargeArrearage
for _, charge := range chargeLi {
var chargeallocation Chargeallocationtab
var chargeArrearage ChargeArrearage
chargeArrearage.Chargetab = charge
chargeCount, err := engine.Table(chargeallocation.TableName()).Where("chargenr = ? and allocateyear < ?", charge.Chargenr, year).Sum(chargeallocation, "allocateexpense")
if err != nil {
return nil, err
}
chargeArrearage.Arrearage = chargeCount
chargeArrearage.ArrearageDate = arrearageDate
chargeArrearageLi = append(chargeArrearageLi, &chargeArrearage)
}
result.Court = court.Descr
result.Items = chargeArrearageLi
result.CurrentPage = pageIndex
result.Total = count
result.TotalPage = int(math.Ceil(float64(count) / float64(pageSize)))
return result, nil
}

Loading…
Cancel
Save