Browse Source

Merge branch 'master' of 101.201.121.115:leo/LAPP_MY_BACKEND

pull/2/head
娄文智 4 years ago
parent
commit
63ed1e6b7f
6 changed files with 541 additions and 62 deletions
  1. +7
    -0
      utils/utils.go
  2. +197
    -8
      web/controllers/chargetab_controller.go
  3. +1
    -40
      web/models/chargeallocationtab.go
  4. +333
    -11
      web/models/chargetab.go
  5. +1
    -1
      web/models/response/chargeallocationtab.go
  6. +2
    -2
      web/routes/routes.go

+ 7
- 0
utils/utils.go View File

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"github.com/lianggx6/goutf16" "github.com/lianggx6/goutf16"
"io" "io"
"math"
"math/rand" "math/rand"
"net/http" "net/http"
"os" "os"
@ -386,4 +387,10 @@ func FileExist(file string) bool {
} }
return true return true
}
func Round(num float64) int {
num += 0.5
num = math.Floor(num)
return int(num)
} }

+ 197
- 8
web/controllers/chargetab_controller.go View File

@ -401,13 +401,26 @@ func GetChargeStatisticData(ctx iris.Context) {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil) supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return return
} }
var chargeTab models.Chargeallocationtab
//chargeTab.Cid = user.Pid
year := time.Now().Year()
start := fmt.Sprintf("%d0101", year)
end := fmt.Sprintf("%d1231", year)
var chargeTab models.Chargetab
currentYear := time.Now().Year()
var year int
yearStr := ctx.URLParam("year")
if yearStr == "" {
year = currentYear
} else {
year = utils.ValueToInt(yearStr, 0)
}
selectType := ctx.URLParam("type") selectType := ctx.URLParam("type")
result, err := chargeTab.GetChargeStatisticData(cid, year, start, end, selectType)
date := ctx.URLParam("date")
if date != "" {
tDate, err1 := utils.TimeParseyyyyMMdd(date)
if err1 != nil {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
date = utils.TimeFormat(tDate, "yyyy-MM-dd")
}
result, err := chargeTab.GetChargeStatisticData(cid, year, selectType, date, currentYear)
if err != nil { if err != nil {
supports.Error(ctx, iris.StatusInternalServerError, "抱歉未找到相关信息", nil) supports.Error(ctx, iris.StatusInternalServerError, "抱歉未找到相关信息", nil)
return return
@ -522,11 +535,31 @@ func GetChargeArrearageData(ctx iris.Context) {
} }
buildingId := ctx.URLParam("buildingid") buildingId := ctx.URLParam("buildingid")
propertyId := ctx.URLParam("propertyid") propertyId := ctx.URLParam("propertyid")
year := time.Now().Year()
start := ctx.URLParam("start")
end := ctx.URLParam("end")
if start != "" || end != "" {
startT, err1 := utils.TimeParseyyyyMMdd(start)
endT, err2 := utils.TimeParseyyyyMMdd(end)
if err1 != nil || err2 != nil {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
start = utils.TimeFormat(startT, "yyyy-MM-dd")
end = utils.TimeFormat(endT, "yyyy-MM-dd")
}
currentYear := time.Now().Year()
var year int
yearStr := ctx.URLParam("year")
if yearStr != "" {
year = utils.ValueToInt(yearStr, 0)
} else {
year = currentYear
}
selectType := ctx.URLParam("type") selectType := ctx.URLParam("type")
arrearageDate := fmt.Sprintf("%d-12-31", year-1) arrearageDate := fmt.Sprintf("%d-12-31", year-1)
var charge models.Chargetab var charge models.Chargetab
result, err := charge.GetChargeArrearageData(cid, pageIndex, pageSize, year, arrearageDate, selectType, chargeType, buildingId, propertyId)
result, err := charge.GetChargeArrearageData(cid, pageIndex, pageSize, year, arrearageDate, selectType, chargeType, buildingId, propertyId, start, end, currentYear)
if err != nil { if err != nil {
fmt.Println("outer error:", err) fmt.Println("outer error:", err)
supports.Error(ctx, iris.StatusInternalServerError, "抱歉未找到相关信息", nil) supports.Error(ctx, iris.StatusInternalServerError, "抱歉未找到相关信息", nil)
@ -534,3 +567,159 @@ func GetChargeArrearageData(ctx iris.Context) {
} }
supports.Ok(ctx, supports.OptionSuccess, result) supports.Ok(ctx, supports.OptionSuccess, result)
} }
func ExportChargeArrearageExcel(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
utils.TrimStruct(user, *user)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
logs := new(models.LeitServerLog)
logs.File = "/controllers/Chargetab_controller.go"
logs.Level = "info"
logs.Function = "GetChargeArrearageData"
logs.Message = "按日期查看缴费陈欠数据"
logs.Operator = user.Userid
logs.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
logs.InsertRecord()
var pageSize = 10
var pageIndex = 1
if size := ctx.URLParam("size"); size != "" {
pageSize = utils.ValueToInt(size, 0)
}
if index := ctx.URLParam("index"); index != "" {
pageIndex = utils.ValueToInt(index, 0)
}
var cid int
// 如果公司机关部门可以搜索cid
if user.Pid == 110 {
cidStr := ctx.URLParam("cid")
cid = utils.ValueToInt(cidStr, 0)
} else {
cid = user.Pid
}
if cid == 0 {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
chargeType, err := ctx.URLParamInt("chargetype")
if err != nil {
chargeType = 0
}
buildingId := ctx.URLParam("buildingid")
propertyId := ctx.URLParam("propertyid")
start := ctx.URLParam("start")
end := ctx.URLParam("end")
if start != "" || end != "" {
startT, err1 := utils.TimeParseyyyyMMdd(start)
endT, err2 := utils.TimeParseyyyyMMdd(end)
if err1 != nil || err2 != nil {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
start = utils.TimeFormat(startT, "yyyy-MM-dd")
end = utils.TimeFormat(endT, "yyyy-MM-dd")
}
currentYear := time.Now().Year()
var year int
yearStr := ctx.URLParam("year")
if yearStr != "" {
year = utils.ValueToInt(yearStr, 0)
} else {
year = currentYear
}
selectType := ctx.URLParam("type")
arrearageDate := fmt.Sprintf("%d-12-31", year-1)
var charge models.Chargetab
fmt.Println("before get result")
result, err := charge.GetChargeArrearageExcelData(cid, pageIndex, pageSize, year, arrearageDate, selectType, chargeType, buildingId, propertyId, start, end, currentYear)
if err != nil {
fmt.Println("outer error:", err)
supports.Error(ctx, iris.StatusInternalServerError, "抱歉未找到相关信息", nil)
return
}
_, filename, err := charge.ExportChargeArrearageExcel(result)
if err != nil {
fmt.Printf("错误err : %v", err)
supports.Error(ctx, iris.StatusBadRequest, "抱歉未找到相关信息", nil)
return
}
strUrl := "public/uploadxlsx/" + filename
supports.Ok(ctx, supports.OptionSuccess, strUrl)
}
// 按日期和缴费类型获取缴费数据
func ExportChargeTypeExcel(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
utils.TrimStruct(user, *user)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
logs := new(models.LeitServerLog)
logs.File = "/controllers/Chargetab_controller.go"
logs.Level = "info"
logs.Function = "ExportChargeTypeExcel"
logs.Message = "导出按日期和收款类型查看缴费数据"
logs.Operator = user.Userid
logs.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
logs.InsertRecord()
var pageSize = 10
var pageIndex = 1
if size := ctx.URLParam("size"); size != "" {
pageSize = utils.ValueToInt(size, 0)
}
if index := ctx.URLParam("index"); index != "" {
pageIndex = utils.ValueToInt(index, 0)
}
var cid int
// 如果公司机关部门可以搜索cid
if user.Pid == 110 {
cidStr := ctx.URLParam("cid")
cid = utils.ValueToInt(cidStr, 0)
} else {
cid = user.Pid
}
if cid == 0 {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
date := ctx.URLParam("date")
tDate, err1 := utils.TimeParseyyyyMMdd(date)
if err1 != nil {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
// 如为传入或传入的chargeType 不合规则使用-1 进行所有chargeType的分类统计
date = utils.TimeFormat(tDate, "yyyy-MM-dd")
chargeWay := ctx.URLParam("charge_way")
if chargeWay == "" {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
var charge models.Chargetab
result, err := charge.GetChargeTypeData(cid, chargeWay, date, pageIndex, pageSize)
if err != nil {
supports.Error(ctx, iris.StatusInternalServerError, "抱歉未找到相关信息", nil)
return
}
_, filename, err := charge.ExportChargeWayExcel(result.Items)
if err != nil {
fmt.Printf("错误err : %v", err)
supports.Error(ctx, iris.StatusBadRequest, "抱歉未找到相关信息", nil)
return
}
strUrl := "public/uploadxlsx/" + filename
supports.Ok(ctx, supports.OptionSuccess, strUrl)
}

+ 1
- 40
web/models/chargeallocationtab.go View File

@ -1,12 +1,9 @@
package models package models
import ( import (
"errors"
"fmt" "fmt"
"github.com/go-xorm/xorm" "github.com/go-xorm/xorm"
"lapp_-wy/db"
"lapp_-wy/utils" "lapp_-wy/utils"
"lapp_-wy/web/models/response"
"strings" "strings"
"time" "time"
) )
@ -150,40 +147,4 @@ func ChargeShareTheMonth(session *xorm.Session, cid int, chargenr int, begdate s
} }
} }
return true return true
}
// 获取当年物业费和陈欠物业费统计数据
func (t *Chargeallocationtab) GetChargeStatisticData(cid int, year int, start string, end string, selectType string) (result *response.ChargeStatisticResponse, err error) {
result = new(response.ChargeStatisticResponse)
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 charge Chargeallocationtab
var count float64
if selectType == "arrearage" {
count, err = engine.Table(charge.TableName()).Where("cid = ? and allocateyear < ? and createtime >= ? and createtime <= ?", cid, year, start, end).Sum(charge, "allocateexpense")
} else if selectType == "current" {
count, err = engine.Table(charge.TableName()).Where("cid = ? and allocateyear >= ? and createtime >= ? and createtime <= ?", cid, year, start, end).Sum(charge, "allocateexpense")
} else {
count, err = engine.Table(charge.TableName()).Where("cid = ? and createtime >= ? and createtime <= ?", cid, start, end).Sum(charge, "allocateexpense")
}
if err != nil {
fmt.Println("error1:", err)
return result, err
}
if selectType != "current" && selectType != "arrearage" {
selectType = "total"
}
result.Cid = cid
result.Court = court.Descr
result.Type = selectType
result.Count = count
return result, nil
}
}

+ 333
- 11
web/models/chargetab.go View File

@ -9,6 +9,7 @@ import (
"lapp_-wy/db" "lapp_-wy/db"
"lapp_-wy/utils" "lapp_-wy/utils"
"lapp_-wy/web/middleware/glog" "lapp_-wy/web/middleware/glog"
"lapp_-wy/web/models/response"
"math" "math"
"strings" "strings"
"time" "time"
@ -39,10 +40,23 @@ type Chargetab struct {
type ChargeArrearage struct { type ChargeArrearage struct {
*Chargetab *Chargetab
Arrearage float64 `json:"arrearage"`
ArrearageDate string `json:"arrearage_date"`
Arrearage int `json:"arrearage"`
ArrearageDate string `json:"arrearage_date"`
} }
type ChargeContactData struct {
*Chargetab
Contract string `json:"contract"`
}
type ChargeArrearageExcelData struct {
*ChargeContactData
Arrearage int `json:"arrearage"`
ArrearageDate string `json:"arrearage_date"`
ChargeTypeStr string `json:"charge_type_str"`
}
type ChargeTypeResponse struct { type ChargeTypeResponse struct {
Cid int `json:"cid"` Cid int `json:"cid"`
Court string `json:"court"` Court string `json:"court"`
@ -1622,7 +1636,6 @@ func (t *Chargetab) GetChargeTypeData(cid int, chargeWay string, date string, pa
totalMoney, err = engine.Table(t.TableName()).Where("cid = ? and chargeway = ? and chargetime = ?", cid, chargeWay, date).Sum(t, "chargableexpense") totalMoney, err = engine.Table(t.TableName()).Where("cid = ? and chargeway = ? and chargetime = ?", cid, chargeWay, date).Sum(t, "chargableexpense")
} }
if err != nil { if err != nil {
fmt.Println("error here1:", err)
return nil, err return nil, err
} }
offset := (pageIndex - 1) * pageSize offset := (pageIndex - 1) * pageSize
@ -1635,7 +1648,6 @@ func (t *Chargetab) GetChargeTypeData(cid int, chargeWay string, date string, pa
} }
count, err = engine.Table(t.TableName()).Where("cid = ? and (chargeway = \"扫码\" or chargeway = \"微信\" or chargeway = \"支付宝\") and chargetime = ?", cid, date).Count() count, err = engine.Table(t.TableName()).Where("cid = ? and (chargeway = \"扫码\" or chargeway = \"微信\" or chargeway = \"支付宝\") and chargetime = ?", cid, date).Count()
if err != nil { if err != nil {
fmt.Println("error:", err)
return nil, err return nil, err
} }
} else { } else {
@ -1657,7 +1669,7 @@ func (t *Chargetab) GetChargeTypeData(cid int, chargeWay string, date string, pa
} }
// 缴费台账接口 // 缴费台账接口
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) {
func (t *Chargetab) GetChargeArrearageData(cid int, pageIndex, pageSize int, year int, arrearageDate string, selectType string, chargeType int, buildingId string, propertyId string, start string, end string, currentYear int) (result *ChargeArrearageResponse, err error) {
result = new(ChargeArrearageResponse) result = new(ChargeArrearageResponse)
engine := db.MasterEngine() engine := db.MasterEngine()
var court Courttab var court Courttab
@ -1670,13 +1682,14 @@ func (t *Chargetab) GetChargeArrearageData(cid int, pageIndex, pageSize int, yea
} }
var chargeLi []*Chargetab var chargeLi []*Chargetab
query := engine.Table(t.TableName())
table := engine.Table(t.TableName())
query := engine.Table(t.TableName()).Where("chargetab.cid = ?", cid)
table := engine.Table(t.TableName()).Where("chargetab.cid = ?", cid)
// 若搜索楼栋id则与物业表连表 // 若搜索楼栋id则与物业表连表
if !utils.ValueIsEmpty(buildingId) { 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)
query = query.Join("LEFT", "propertytab", "propertytab.propertyid = chargetab.propertyid and propertytab.cid = chargetab.cid").And("propertytab.buildingid = ?", buildingId)
table = table.Join("LEFT", "propertytab", "propertytab.propertyid = chargetab.propertyid and propertytab.cid = chargetab.cid").And("propertytab.buildingid = ?", buildingId)
} }
// arrearage 陈欠 current 当年 // arrearage 陈欠 current 当年
if selectType == "arrearage" { if selectType == "arrearage" {
query = query.Where("chargetab.chargetime <= ?", arrearageDate) query = query.Where("chargetab.chargetime <= ?", arrearageDate)
@ -1693,6 +1706,17 @@ func (t *Chargetab) GetChargeArrearageData(cid int, pageIndex, pageSize int, yea
query = query.And("chargetab.propertyid = ?", propertyId) query = query.And("chargetab.propertyid = ?", propertyId)
table = table.And("chargetab.propertyid = ?", propertyId) table = table.And("chargetab.propertyid = ?", propertyId)
} }
if start != "" {
query = query.And("chargetab.chargetime >= ? and chargetab.chargetime <= ?", start, end)
table = table.And("chargetab.chargetime >= ? and chargetab.chargetime <= ?", start, end)
} else {
if year != 0 {
start := fmt.Sprintf("%d-01-01", year)
end := fmt.Sprintf("%d-01-01", year+1)
query = query.And("chargetab.chargetime >= ? and chargetab.chargetime < ?", start, end)
table = table.And("chargetab.chargetime >= ? and chargetab.chargetime < ?", start, end)
}
}
offset := pageSize * (pageIndex - 1) offset := pageSize * (pageIndex - 1)
err = query.Limit(pageSize, offset).Find(&chargeLi) err = query.Limit(pageSize, offset).Find(&chargeLi)
if err != nil { if err != nil {
@ -1708,11 +1732,11 @@ func (t *Chargetab) GetChargeArrearageData(cid int, pageIndex, pageSize int, yea
var chargeallocation Chargeallocationtab var chargeallocation Chargeallocationtab
var chargeArrearage ChargeArrearage var chargeArrearage ChargeArrearage
chargeArrearage.Chargetab = charge chargeArrearage.Chargetab = charge
chargeCount, err := engine.Table(chargeallocation.TableName()).Where("chargenr = ? and allocateyear < ?", charge.Chargenr, year).Sum(chargeallocation, "allocateexpense")
chargeCount, err := engine.Table(chargeallocation.TableName()).Where("cid = ? and chargenr = ? and allocateyear < ?", cid, charge.Chargenr, currentYear).Sum(chargeallocation, "allocateexpense")
if err != nil { if err != nil {
return nil, err return nil, err
} }
chargeArrearage.Arrearage = chargeCount
chargeArrearage.Arrearage = utils.Round(chargeCount)
chargeArrearage.ArrearageDate = arrearageDate chargeArrearage.ArrearageDate = arrearageDate
chargeArrearageLi = append(chargeArrearageLi, &chargeArrearage) chargeArrearageLi = append(chargeArrearageLi, &chargeArrearage)
} }
@ -1722,5 +1746,303 @@ func (t *Chargetab) GetChargeArrearageData(cid int, pageIndex, pageSize int, yea
result.Total = count result.Total = count
result.TotalPage = int(math.Ceil(float64(count) / float64(pageSize))) result.TotalPage = int(math.Ceil(float64(count) / float64(pageSize)))
return result, nil return result, nil
}
// 获取当年物业费和陈欠物业费统计数据
func (t *Chargetab) GetChargeStatisticData(cid int, year int, selectType string, date string, currentYear int) (result *response.ChargeStatisticResponse, err error) {
result = new(response.ChargeStatisticResponse)
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 charge Chargetab
var chargeAllocation Chargeallocationtab
//var count float64
query := engine.Table(charge.TableName()).Where("chargetab.cid = ?", cid)
if year != 0 || date != "" {
query = query.Join("LEFT", "chargeallocationtab", "chargetab.chargenr = chargeallocationtab.chargenr")
if date != "" {
query = query.And("chargetab.chargetime = ?", date)
} else {
start := fmt.Sprintf("%d-01-01", year)
end := fmt.Sprintf("%d-01-01", year+1)
query = query.And("chargetab.chargetime >= ? and chargetab.chargetime < ?", start, end)
}
}
if selectType == "arrearage" {
query = query.And("chargeallocationtab.allocateyear < ?", currentYear)
} else if selectType == "current" {
query = query.And("chargeallocationtab.allocateyear >= ?", currentYear)
}
count, err := query.Sum(chargeAllocation, "chargeallocationtab.allocateexpense")
if err != nil {
return result, err
}
if selectType != "current" && selectType != "arrearage" {
selectType = "total"
}
result.Cid = cid
result.Court = court.Descr
result.Type = selectType
result.Count = utils.Round(count)
return result, nil
}
func (t *Chargetab) GetChargeArrearageExcelData(cid int, pageIndex, pageSize int, year int, arrearageDate string, selectType string, chargeType int, buildingId string, propertyId string, start string, end string, currentYear int) (result []*ChargeArrearageExcelData, err error) {
engine := db.MasterEngine()
var chargeLi []*ChargeContactData
query := engine.Table(t.TableName()).Where("chargetab.cid = ?", cid).Join("LEFT", "propertytab", "propertytab.propertyid = chargetab.propertyid and propertytab.cid = chargetab.cid")
// 若搜索楼栋id则与物业表连表
if !utils.ValueIsEmpty(buildingId) {
query = query.And("propertytab.buildingid = ?", buildingId)
}
// arrearage 陈欠 current 当年
if selectType == "arrearage" {
query = query.Where("chargetab.chargetime <= ?", arrearageDate)
} else if selectType == "current" {
query = query.Where("chargetab.chargetime > ?", arrearageDate)
}
if chargeType != 0 {
query = query.And("chargetab.chargetype = ?", chargeType)
}
if !utils.ValueIsEmpty(propertyId) {
query = query.And("chargetab.propertyid = ?", propertyId)
}
if start != "" {
query = query.And("chargetab.chargetime >= ? and chargetab.chargetime <= ?", start, end)
} else {
if year != 0 {
start := fmt.Sprintf("%d-01-01", year)
end := fmt.Sprintf("%d-01-01", year+1)
query = query.And("chargetab.chargetime >= ? and chargetab.chargetime < ?", start, end)
}
}
offset := pageSize * (pageIndex - 1)
err = query.Limit(pageSize, offset).Find(&chargeLi)
if err != nil {
return nil, err
}
// 在chargetab上拼接两个字段 一个陈欠日期 一个陈欠金额
var chargeArrearageExcelLi []*ChargeArrearageExcelData
for _, charge := range chargeLi {
var chargeallocation Chargeallocationtab
var chargeArrearageExcel ChargeArrearageExcelData
chargeArrearageExcel.ChargeContactData = charge
chargeCount, err := engine.Table(chargeallocation.TableName()).Where("cid = ? and chargenr = ? and allocateyear < ?", cid, charge.Chargenr, currentYear).Sum(chargeallocation, "allocateexpense")
if err != nil {
return nil, err
}
chargeArrearageExcel.Arrearage = utils.Round(chargeCount)
chargeArrearageExcel.ArrearageDate = arrearageDate
if chargeArrearageExcel.Chargetype == 1 {
chargeArrearageExcel.ChargeTypeStr = "物业费"
} else if chargeArrearageExcel.Chargetype == 2 {
chargeArrearageExcel.ChargeTypeStr = "电梯卡费"
} else if chargeArrearageExcel.Chargetype == 3 {
chargeArrearageExcel.ChargeTypeStr = "车位费"
}
chargeArrearageExcelLi = append(chargeArrearageExcelLi, &chargeArrearageExcel)
}
return result, nil
}
func (t *Chargetab) ExportChargeArrearageExcel(datalist []*ChargeArrearageExcelData) (excelfile string, filename string, err error) {
var file *xlsx.File
var sheet *xlsx.Sheet
var row *xlsx.Row
var cell *xlsx.Cell
file = xlsx.NewFile()
sheet, err = file.AddSheet("缴费台账")
if err != nil {
return "", "", err
}
tableHead := true
fieldList := []string{
"项目号",
"缴费类型",
"物业编号",
"业主",
"收费起始日期",
"收费结束日期",
"收费方式",
"应收费用",
"实收费用",
"收费时间",
"陈欠金额",
"陈欠日期",
}
var courtName string
for _, val := range datalist {
if tableHead {
//添加表头
row = sheet.AddRow()
for _, field := range fieldList {
cell = row.AddCell()
cell.Value = field
}
tableHead = false
//continue
}
row = sheet.AddRow()
if courtName == "" {
engine := db.MasterEngine()
var court Courttab
exist, err := engine.Table(court.TableName()).ID(val.Cid).Get(&court)
if err != nil {
return "", "", err
}
if !exist {
return "", "", errors.New("data not exist")
}
courtName = court.Descr
}
cell = row.AddCell()
cell.Value = courtName
cell = row.AddCell()
cell.Value = utils.ValueToString(val.ChargeTypeStr, "")
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Propertyid, "")
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Contract, "")
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Chargestartdate, "")
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Chargeenddate, "")
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Chargeway, "")
cell = row.AddCell()
cell.Value = fmt.Sprintf("%0.0f", val.Chargableexpense)
cell = row.AddCell()
cell.Value = fmt.Sprintf("%0.0f", val.Chargedexpense)
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Chargetime, "")
cell = row.AddCell()
cell.Value = fmt.Sprintf("%d", val.Arrearage)
cell = row.AddCell()
cell.Value = utils.ValueToString(val.ArrearageDate, "")
}
name := utils.MakeOrderSn("缴费台账")
filename = name + ".xlsx" //文件名
exceldir, _ := utils.GetCurrentPath("web/public/uploadxlsx") // 目录+文件名
excelfile = exceldir + "/" + filename
err = file.Save(excelfile)
if err != nil {
return "", "", err
}
return excelfile, filename, nil
}
func (t *Chargetab) ExportChargeWayExcel(datalist []*Chargetab) (excelfile string, filename string, err error) {
var file *xlsx.File
var sheet *xlsx.Sheet
var row *xlsx.Row
var cell *xlsx.Cell
file = xlsx.NewFile()
sheet, err = file.AddSheet("缴费台账")
if err != nil {
return "", "", err
}
tableHead := true
fieldList := []string{
"项目号",
"缴费类型",
"物业编号",
"收费起始日期",
"收费结束日期",
"收费方式",
"应收费用",
"实收费用",
"收费时间",
}
var courtName string
for _, val := range datalist {
if tableHead {
//添加表头
row = sheet.AddRow()
for _, field := range fieldList {
cell = row.AddCell()
cell.Value = field
}
tableHead = false
//continue
}
row = sheet.AddRow()
if courtName == "" {
engine := db.MasterEngine()
var court Courttab
exist, err := engine.Table(court.TableName()).ID(val.Cid).Get(&court)
if err != nil {
return "", "", err
}
if !exist {
return "", "", errors.New("data not exist")
}
courtName = court.Descr
}
cell = row.AddCell()
cell.Value = courtName
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Chargetype, "")
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Propertyid, "")
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Chargestartdate, "")
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Chargeenddate, "")
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Chargeway, "")
cell = row.AddCell()
cell.Value = fmt.Sprintf("%0.0f", val.Chargableexpense)
cell = row.AddCell()
cell.Value = fmt.Sprintf("%0.0f", val.Chargedexpense)
cell = row.AddCell()
cell.Value = utils.ValueToString(val.Chargetime, "")
cell = row.AddCell()
}
name := utils.MakeOrderSn("缴费台账")
filename = name + ".xlsx" //文件名
exceldir, _ := utils.GetCurrentPath("web/public/uploadxlsx") // 目录+文件名
excelfile = exceldir + "/" + filename
err = file.Save(excelfile)
if err != nil {
return "", "", err
}
return excelfile, filename, nil
} }

+ 1
- 1
web/models/response/chargeallocationtab.go View File

@ -13,5 +13,5 @@ type ChargeStatisticResponse struct {
Cid int `json:"cid"` Cid int `json:"cid"`
Court string `json:"court"` Court string `json:"court"`
Type string `json:"type"` Type string `json:"type"`
Count float64 `json:"count"`
Count int `json:"count"`
} }

+ 2
- 2
web/routes/routes.go View File

@ -165,12 +165,12 @@ func Hub(app *iris.Application) {
chargetab.Get("/readexcel", controllers.GetChargetabReadExcel) chargetab.Get("/readexcel", controllers.GetChargetabReadExcel)
chargetab.Get("/readbuildexcel", controllers.GetChargetabReadBuildingExcel) chargetab.Get("/readbuildexcel", controllers.GetChargetabReadBuildingExcel)
chargetab.Get("/readyearexcel", controllers.GetChargetabReadYearExcel) chargetab.Get("/readyearexcel", controllers.GetChargetabReadYearExcel)
chargetab.Get("/readdataexcel", controllers.GetChargetabReadDataExcel)
chargetab.Get("/readdataexcel", controllers.ExportChargeArrearageExcel)
chargetab.Delete("/del", controllers.DelChargetab) chargetab.Delete("/del", controllers.DelChargetab)
chargetab.Get("/recordlist", controllers.GetRecordLogList) chargetab.Get("/recordlist", controllers.GetRecordLogList)
chargetab.Get("/statistic", controllers.GetChargeStatisticData) chargetab.Get("/statistic", controllers.GetChargeStatisticData)
chargetab.Get("/type/list", controllers.GetChargeTypeData) chargetab.Get("/type/list", controllers.GetChargeTypeData)
//chargetab.Get("/arrearage/list", controllers.GetChargeArrearageData)
chargetab.Get("/readtypeexcel", controllers.ExportChargeTypeExcel)
// 固定资产 // 固定资产
assettab := admin.Party("/assettab") assettab := admin.Party("/assettab")


Loading…
Cancel
Save