Browse Source

支持按月和按天缴费

feature_charge
娄文智 3 years ago
parent
commit
6feb8130ee
7 changed files with 277 additions and 150 deletions
  1. +73
    -17
      utils/time.go
  2. +39
    -0
      web/controllers/chargetab_controller.go
  3. +118
    -49
      web/controllers/contracttab_controller.go
  4. +2
    -0
      web/models/accesscardtab.go
  5. +38
    -18
      web/models/chargetab.go
  6. +6
    -66
      web/models/contracttab.go
  7. +1
    -0
      web/routes/routes.go

+ 73
- 17
utils/time.go View File

@ -2,6 +2,7 @@ package utils
import ( import (
"errors" "errors"
"fmt"
"log" "log"
"math" "math"
"strconv" "strconv"
@ -285,17 +286,26 @@ func Timelen(t1 string, t2 string) (int, error) {
//获取某一天的0点时间 //获取某一天的0点时间
func GetZeroTime(d time.Time) time.Time { func GetZeroTime(d time.Time) time.Time {
now := time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location())
now := time.Date(d.Year(), d.Month(), d.Day(), 0, 0, 0, 0, d.Location())
return now return now
} }
//返回格式:例如2016-05-01 00:00:00的时间戳到2016-06-01 00:00:00的时间戳 //返回格式:例如2016-05-01 00:00:00的时间戳到2016-06-01 00:00:00的时间戳
func TimeReturnMonth(now time.Time) (firstMonth string, lastMonth string) {
func ReturnMonth(now time.Time) (firstMonth string, lastMonth string) {
currentYear, currentMonth, _ := now.Date() currentYear, currentMonth, _ := now.Date()
currentLocation := now.Location() currentLocation := now.Location()
firstOfMonth := time.Date(currentYear, currentMonth, 1, 0, 0, 0, 0, currentLocation) firstOfMonth := time.Date(currentYear, currentMonth, 1, 0, 0, 0, 0, currentLocation)
lastOfMonth := firstOfMonth.AddDate(0, 1, 0).Add(time.Second * -1) lastOfMonth := firstOfMonth.AddDate(0, 1, 0).Add(time.Second * -1)
return TimeFormat(firstOfMonth,"yyyyMMdd"), TimeFormat(lastOfMonth,"yyyyMMdd")
return TimeFormat(firstOfMonth, "yyyyMMdd"), TimeFormat(lastOfMonth, "yyyyMMdd")
}
//返回格式:例如2016-05-01 00:00:00的时间戳到2016-06-01 00:00:00的时间戳
func TimeReturnMonth(now time.Time) (firstMonth time.Time, lastMonth time.Time) {
currentYear, currentMonth, _ := now.Date()
currentLocation := now.Location()
firstOfMonth := time.Date(currentYear, currentMonth, 1, 0, 0, 0, 0, currentLocation)
lastOfMonth := firstOfMonth.AddDate(0, 1, -1)
return firstOfMonth, lastOfMonth
} }
//返回当前所在年的最后一天 //返回当前所在年的最后一天
@ -303,7 +313,7 @@ func TimeReturnLastYear(now time.Time) (lastYear string) {
currentYear, _, _ := now.Date() currentYear, _, _ := now.Date()
currentLocation := now.Location() currentLocation := now.Location()
lastOfYear := time.Date(currentYear, 12, 31, 0, 0, 0, 0, currentLocation) lastOfYear := time.Date(currentYear, 12, 31, 0, 0, 0, 0, currentLocation)
return TimeFormat(lastOfYear,"yyyyMMdd")
return TimeFormat(lastOfYear, "yyyyMMdd")
} }
//计算两个日期的间隔天数 //计算两个日期的间隔天数
@ -314,6 +324,13 @@ func TimeSub(t1, t2 time.Time) int {
return int(t1.Sub(t2).Hours() / 24) return int(t1.Sub(t2).Hours() / 24)
} }
//返回当前时间所在月份的天数
func TimeReturnMonths(timeNow time.Time) (lenDays int) {
t1, t2 := TimeReturnMonth(timeNow)
lenDays = TimeSub(t2, t1)
return (lenDays + 1)
}
// 计算日期相差多少月 // 计算日期相差多少月
func SubMonth(t1, t2 time.Time) (month int) { func SubMonth(t1, t2 time.Time) (month int) {
y1 := t1.Year() y1 := t1.Year()
@ -339,34 +356,73 @@ func SubMonth(t1, t2 time.Time) (month int) {
} }
//计算时间日历(日期) //计算时间日历(日期)
func SelectDate(t1 string,t2 string) []string{
func SelectDate(t1 string, t2 string) []string {
var data []string var data []string
time1,_ := TimeParseyyyyMMdd(t1)
time2,_ := TimeParseyyyyMMdd(t2)
time1, _ := TimeParseyyyyMMdd(t1)
time2, _ := TimeParseyyyyMMdd(t2)
ut1 := time1.Unix() ut1 := time1.Unix()
ut2 := time2.Unix() ut2 := time2.Unix()
for i := 0; ut1 <= ut2 - int64(i)*86400; i++ {
for i := 0; ut1 <= ut2-int64(i)*86400; i++ {
timestamp := ut2 - int64(i)*86400 timestamp := ut2 - int64(i)*86400
tm := time.Unix(timestamp, 0) tm := time.Unix(timestamp, 0)
str := TimeFormat(tm,"yyyyMMdd")
data = append(data,str)
str := TimeFormat(tm, "yyyyMMdd")
data = append(data, str)
} }
return data return data
} }
//计算时间日历(日期) //计算时间日历(日期)
func SelectMonth(t1 string,t2 string) []string{
func SelectMonth(t1 string, t2 string) []string {
var data []string var data []string
time1,_ := TimeParseyyyyMMdd(t1)
time2,_ := TimeParseyyyyMMdd(t2)
time1, _ := TimeParseyyyyMMdd(t1)
time2, _ := TimeParseyyyyMMdd(t2)
ut1 := time1.Unix() ut1 := time1.Unix()
ut2 := time2.Unix() ut2 := time2.Unix()
for i := 0; ut1 <= ut2 - int64(i)*86400; i++ {
for i := 0; ut1 <= ut2-int64(i)*86400; i++ {
timestamp := ut2 - int64(i)*86400 timestamp := ut2 - int64(i)*86400
tm := time.Unix(timestamp, 0) tm := time.Unix(timestamp, 0)
str := TimeFormat(tm,"yyyy/MM")
data = append(data,str)
str := TimeFormat(tm, "yyyy/MM")
data = append(data, str)
} }
data = RemoveRepeatedElement(data) data = RemoveRepeatedElement(data)
return data return data
}
}
//计算天数的金额
func ComputeMoney(beginDate time.Time, unitPrice float64, months int, lenDay int, area float64) (priceMoney int) {
if months <= 0 && lenDay <= 0 {
return 0
}
priceMonth := float64(months) * unitPrice * area
endDate := beginDate.AddDate(0, 0, lenDay)
_, lastDay := TimeReturnMonth(beginDate)
result := endDate.Before(lastDay)
if result {
//第一种情况,没有跨月
lenDays := TimeReturnMonths(beginDate)
price := float64(lenDay) / float64(lenDays) * unitPrice * area
priceAll := priceMonth + price
priceMoney = ValueToInt(fmt.Sprintf("%0.0f", priceAll), 0)
return
} else {
//第二种情况,已经跨月
beglenDays := TimeReturnMonths(beginDate)
endlenDays := TimeReturnMonths(endDate)
//第一部分
lenDay1 := TimeSub(lastDay, beginDate)
price1 := float64(lenDay1) / float64(beglenDays) * unitPrice * area
//第二部分
lenDay2 := lenDay - lenDay1
price2 := float64(lenDay2) / float64(endlenDays) * unitPrice * area
priceAll := priceMonth + price2 + price1
priceMoney = ValueToInt(fmt.Sprintf("%0.0f", priceAll), 0)
return
}
}

+ 39
- 0
web/controllers/chargetab_controller.go View File

@ -519,6 +519,45 @@ func GetChargeArrearageData(ctx iris.Context) {
supports.Ok(ctx, supports.OptionSuccess, result) supports.Ok(ctx, supports.OptionSuccess, result)
} }
// 按日期和缴费类型获取缴费数据
func GetChargeComputeMoney(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
utils.TrimStruct(user, *user)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
beginTime := ctx.URLParam("beginDate")
unitPrice, err := ctx.URLParamFloat64("unitPrice")
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, "unitPrice获取失败!", nil)
return
}
months, err := ctx.URLParamInt("months")
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, "months获取失败!", nil)
return
}
lenDay, err := ctx.URLParamInt("lenDay")
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, "lenDay获取失败!", nil)
return
}
area, err := ctx.URLParamFloat64("area")
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, "area获取失败!", nil)
return
}
beginDate, err := utils.TimeParseyyyyMMdd(beginTime)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, "beginDate时间转换失败!", nil)
return
}
result := utils.ComputeMoney(beginDate, unitPrice, months, lenDay, area)
supports.Ok(ctx, supports.OptionSuccess, result)
}
// 按日期和缴费类型获取缴费数据 // 按日期和缴费类型获取缴费数据
func GetChargeWayListData(ctx iris.Context) { func GetChargeWayListData(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx) user, ok := jwts.ParseToken(ctx)


+ 118
- 49
web/controllers/contracttab_controller.go View File

@ -39,32 +39,61 @@ func InsertContracttab(ctx iris.Context) {
if err != nil { if err != nil {
data.Chargetime = utils.TimeFormat(time.Now(), "yyyy-MM-dd") data.Chargetime = utils.TimeFormat(time.Now(), "yyyy-MM-dd")
} }
me := new(models.Contracttab)
me = &data.Contracttab
me.Chargableexpense = data.Contracttab.Chargedexpense
me.Cid = data.Cid
me.Chargetype = data.Chargetype
me.Chargeway = data.Contracttab.Chargeway
lengthdate := 0.0
//下次的开始时间不能小于上次的缴费时间
if data.Begindate < data.Contracttab.Begdate {
supports.Error(ctx, iris.StatusBadRequest, "开始时间不能小于上次的缴费时间!", nil)
return
}
switch data.Chargetype { switch data.Chargetype {
case 1: case 1:
start, err := time.Parse("2006-01-02", data.Begindate)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
/*******
*Chargetype : 物业费
*lengthdate : 缴费时长
**************/
lengthdate := ""
if data.Months > 0{
lengthdate += utils.ValueToString(data.Months,"") + "月 "
}
if data.Days > 0{
lengthdate += utils.ValueToString(data.Days,"") + "天 "
} }
fmt.Println("controller endate:", data.Enddate)
end, err := time.Parse("2006-01-02", data.Enddate)
//初始化合同
me := new(models.Contracttab)
me.Cid = data.Cid
me.Contractid = data.Contractid
me.Chargetype = data.Chargetype
me.Chargeway = data.Contracttab.Chargeway
me.Mobile = data.Phone1
me.Remake = data.Contracttab.Remake
me.Linkman = data.Contact
me.Begdate = data.Begindate
me.Enddate = data.Enddate
me.Chargedexpense = data.Contracttab.Chargedexpense
me.Chargableexpense = data.Contracttab.Chargedexpense
me.Lengthdate = lengthdate
me.Chargetime = data.Chargetime
me.Createtime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
if utils.ValueIsEmpty(me.Createby) {
me.Createby = user.Name
}
if utils.ValueIsEmpty(me.Contractid) {
err = me.Add(data)
} else {
err = me.Update(data)
}
if err != nil { if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return return
} }
days := (end.Unix() - start.Unix()) / (86400*30)
fmt.Println("days:", days)
lengthdate = float64(days)
supports.Ok(ctx, supports.OptionSuccess, "")
case 2: case 2:
//
lengthdate = data.Contracttab.Chargedexpense / data.Unitprice
/*******
*Chargetype : 电梯费
*lengthdate : 缴费时长
**************/
lengthdate := data.Contracttab.Chargedexpense / data.Unitprice
//判断是否 //判断是否
access := new(models.Accesscardtab) access := new(models.Accesscardtab)
access.Cid = user.Pid access.Cid = user.Pid
@ -90,9 +119,43 @@ func InsertContracttab(ctx iris.Context) {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return return
} }
me := new(models.Contracttab)
me.Cid = data.Cid
me.Chargetype = data.Chargetype
me.Chargeway = data.Contracttab.Chargeway
me.Contractid = result.Contractid me.Contractid = result.Contractid
me.Chargableexpense = data.Contracttab.Chargedexpense
me.Chargedexpense = data.Contracttab.Chargedexpense
me.Mobile = data.Phone1
me.Linkman = data.Contact
me.Begdate = data.Begindate
begtime, _ := utils.TimeParseyyyyMMdd(data.Begindate)
months := utils.ValueToInt(lengthdate,0)
Begdate := begtime.AddDate(0, months, 0)
me.Enddate = utils.TimeFormat(Begdate, "yyyy-MM-dd")
me.Lengthdate = fmt.Sprintf("%0.0f",lengthdate) + " 月 "
me.Chargetime = data.Chargetime
me.Createtime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
if utils.ValueIsEmpty(me.Createby) {
me.Createby = user.Name
}
if utils.ValueIsEmpty(me.Contractid) {
err = me.Add(data)
} else {
err = me.Update(data)
}
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
supports.Ok(ctx, supports.OptionSuccess, "")
case 3: case 3:
lengthdate = data.Contracttab.Chargedexpense / data.Unitprice
/*******
*Chargetype : 车位费
*lengthdate : 缴费时长
**************/
lengthdate := data.Contracttab.Chargedexpense / data.Unitprice
carport := new(models.Carporttab) carport := new(models.Carporttab)
carport.Cid = user.Pid carport.Cid = user.Pid
carport.Cid = user.Pid carport.Cid = user.Pid
@ -102,33 +165,39 @@ func InsertContracttab(ctx iris.Context) {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return return
} }
}
me.Mobile = data.Phone1
me.Linkman = data.Contact
me.Begdate = data.Begindate
me.Lengthdate = utils.ValueToInt(fmt.Sprintf("%0.0f", lengthdate), 0)
me.Chargetime = data.Chargetime
//if data.Chargetype == 1 {
//
//} else {
// me.Lengthdate = utils.ValueToInt(fmt.Sprintf("%0.0f", lengthdate), 0)
//}
me.Createtime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
if utils.ValueIsEmpty(me.Createby) {
me.Createby = user.Name
}
lengthdate = float64(me.Lengthdate)
if utils.ValueIsEmpty(me.Contractid) {
err = me.Add(data, lengthdate)
} else {
err = me.Update(data, lengthdate)
}
me := new(models.Contracttab)
me.Cid = data.Cid
me.Chargetype = data.Chargetype
me.Chargeway = data.Contracttab.Chargeway
me.Contractid = data.Contractid
me.Chargableexpense = data.Contracttab.Chargedexpense
me.Chargedexpense = data.Contracttab.Chargedexpense
me.Mobile = data.Phone1
me.Linkman = data.Contact
me.Begdate = data.Begindate
begtime, _ := utils.TimeParseyyyyMMdd(data.Begindate)
months := utils.ValueToInt(lengthdate,0)
Begdate := begtime.AddDate(0, months, 0)
me.Enddate = utils.TimeFormat(Begdate, "yyyy-MM-dd")
me.Lengthdate = fmt.Sprintf("%0.0f",lengthdate) + " 月 "
me.Chargetime = data.Chargetime
me.Createtime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
if utils.ValueIsEmpty(me.Createby) {
me.Createby = user.Name
}
if utils.ValueIsEmpty(me.Contractid) {
err = me.Add(data)
} else {
err = me.Update(data)
}
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
supports.Ok(ctx, supports.OptionSuccess, "")
} }
supports.Ok(ctx, supports.OptionSuccess, "")
} }
func UpdateContracttab(ctx iris.Context) { func UpdateContracttab(ctx iris.Context) {
@ -171,13 +240,13 @@ func UpdateContracttab(ctx iris.Context) {
lengthdate = data.Contracttab.Chargedexpense / data.Unitprice lengthdate = data.Contracttab.Chargedexpense / data.Unitprice
} }
me.Lengthdate = utils.ValueToInt(fmt.Sprintf("%0.0f", lengthdate), 0)
me.Lengthdate = fmt.Sprintf("%0.0f", lengthdate)
me.Chargetime = data.Chargetime me.Chargetime = data.Chargetime
me.Createtime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss") me.Createtime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
if utils.ValueIsEmpty(me.Createby) { if utils.ValueIsEmpty(me.Createby) {
me.Createby = user.Name me.Createby = user.Name
} }
err := me.Update(data, lengthdate)
err := me.Update(data)
if err != nil { if err != nil {
supports.Error(ctx, iris.StatusBadRequest, "更新失败", nil) supports.Error(ctx, iris.StatusBadRequest, "更新失败", nil)
return return
@ -301,7 +370,7 @@ func ExcelContracttab(ctx iris.Context) {
glog.InfoExtln("导入合同", "err is:", err) glog.InfoExtln("导入合同", "err is:", err)
} }
lengthdays := me.Chargedexpense / price.Unitprice / infodata.Constructionarea lengthdays := me.Chargedexpense / price.Unitprice / infodata.Constructionarea
me.Lengthdate = utils.ValueToInt(fmt.Sprintf("%0.0f", lengthdays), 0)
me.Lengthdate = fmt.Sprintf("%0.0f", lengthdays)
glog.InfoExtln("导入合同", "Propertyid", infodata.Propertyid) glog.InfoExtln("导入合同", "Propertyid", infodata.Propertyid)
glog.InfoExtln("导入合同", "tt1", tt1) glog.InfoExtln("导入合同", "tt1", tt1)
glog.InfoExtln("导入合同", "tt2", tt2) glog.InfoExtln("导入合同", "tt2", tt2)
@ -312,9 +381,9 @@ func ExcelContracttab(ctx iris.Context) {
glog.InfoExtln("导入合同", "Lengthdate", me.Lengthdate) glog.InfoExtln("导入合同", "Lengthdate", me.Lengthdate)
data.Chargetime = me.Chargetime data.Chargetime = me.Chargetime
if utils.ValueIsEmpty(infodata.Contractid) { if utils.ValueIsEmpty(infodata.Contractid) {
err = me.Add(data, lengthdays)
err = me.Add(data)
} else { } else {
err = me.Update(data, lengthdays)
err = me.Update(data)
} }
if err != nil { if err != nil {


+ 2
- 0
web/models/accesscardtab.go View File

@ -120,6 +120,8 @@ type ContractInfo struct {
Unit string `json:"unit"` Unit string `json:"unit"`
Chargeway string `json:"chargeway"` Chargeway string `json:"chargeway"`
Room string `json:"room"` Room string `json:"room"`
Months int `json:"months"`
Days int `json:"days"`
Constructionarea float64 `json:"constructionarea"` Constructionarea float64 `json:"constructionarea"`
Usearea string `json:"usearea"` Usearea string `json:"usearea"`
Contact string `json:"contact"` Contact string `json:"contact"`


+ 38
- 18
web/models/chargetab.go View File

@ -1101,11 +1101,12 @@ func (t *Chargetab) Update() error {
m.Createby = t.Chargeby m.Createby = t.Chargeby
t1, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargestartdate, "")) t1, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargestartdate, ""))
t2, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargeenddate, "")) t2, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargeenddate, ""))
glog.InfoExt("更新合同", "开始日期", t1) glog.InfoExt("更新合同", "开始日期", t1)
glog.InfoExt("更新合同", "结束日期", t2) glog.InfoExt("更新合同", "结束日期", t2)
lengthdate := utils.SubMonth(t2, t1)
lengthdate := utils.TimeSub(t2, t1)
glog.InfoExt("更新合同", "缴费时长", lengthdate) glog.InfoExt("更新合同", "缴费时长", lengthdate)
m.Lengthdate = lengthdate
m.Lengthdate = utils.ValueToString(lengthdate,"") + "天"
_, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m) _, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m)
if err != nil { if err != nil {
session.Rollback() session.Rollback()
@ -1136,9 +1137,9 @@ func (t *Chargetab) Update() error {
m.Createby = t.Chargeby m.Createby = t.Chargeby
t1, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargestartdate, "")) t1, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargestartdate, ""))
t2, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargeenddate, "")) t2, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargeenddate, ""))
lengthdate := utils.SubMonth(t2, t1)
lengthdate := utils.TimeSub(t2, t1)
glog.InfoExt("更新合同", "缴费时长", lengthdate) glog.InfoExt("更新合同", "缴费时长", lengthdate)
m.Lengthdate = lengthdate
m.Lengthdate = utils.ValueToString(lengthdate,"") + "天"
_, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m) _, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m)
if err != nil { if err != nil {
session.Rollback() session.Rollback()
@ -1169,9 +1170,9 @@ func (t *Chargetab) Update() error {
m.Createby = t.Chargeby m.Createby = t.Chargeby
t1, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargestartdate, "")) t1, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargestartdate, ""))
t2, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargeenddate, "")) t2, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargeenddate, ""))
lengthdate := utils.SubMonth(t2, t1)
lengthdate := utils.TimeSub(t2, t1)
glog.InfoExt("更新合同", "缴费时长", lengthdate) glog.InfoExt("更新合同", "缴费时长", lengthdate)
m.Lengthdate = lengthdate
m.Lengthdate = utils.ValueToString(lengthdate,"") + "天"
_, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m) _, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m)
if err != nil { if err != nil {
session.Rollback() session.Rollback()
@ -1270,8 +1271,9 @@ func (t *Chargetab) Del() error {
t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, "")) t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, ""))
t2, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargeenddate, "")) t2, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargeenddate, ""))
t2 = t2.AddDate(0, 0, 1) t2 = t2.AddDate(0, 0, 1)
lengthdate := utils.SubMonth(t2, t1)
m.Lengthdate = lengthdate
lengthdate := utils.TimeSub(t2, t1)
glog.InfoExt("更新合同", "缴费时长", lengthdate)
m.Lengthdate = utils.ValueToString(lengthdate,"") + "天"
_, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m) _, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m)
if err != nil { if err != nil {
session.Rollback() session.Rollback()
@ -1361,7 +1363,7 @@ func (t *Chargetab) Del() error {
} }
//查询合同编号 //查询合同编号
pro := new(Accesscardtab) pro := new(Accesscardtab)
_, err = session.Table("accesscardtab").Where("", t.Cid, info.Accesscardid).Get(pro)
_, err = session.Table("accesscardtab").Where("cid = ? and accesscardid =?", t.Cid, info.Accesscardid).Get(pro)
if err != nil { if err != nil {
session.Rollback() session.Rollback()
return err return err
@ -1377,8 +1379,9 @@ func (t *Chargetab) Del() error {
m.Chargetime = cinfo.Chargetime m.Chargetime = cinfo.Chargetime
t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, "")) t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, ""))
t2, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargeenddate, "")) t2, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargeenddate, ""))
lengthdate := utils.SubMonth(t2, t1)
m.Lengthdate = lengthdate
lengthdate := utils.TimeSub(t2, t1)
glog.InfoExt("更新合同", "缴费时长", lengthdate)
m.Lengthdate = utils.ValueToString(lengthdate,"") + "天"
_, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m) _, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m)
if err != nil { if err != nil {
session.Rollback() session.Rollback()
@ -1469,7 +1472,7 @@ func (t *Chargetab) Del() error {
} }
//查询合同编号 //查询合同编号
pro := new(Carporttab) pro := new(Carporttab)
_, err = session.Table("carporttab").Where("", t.Cid, info.Carportid).Get(pro)
_, err = session.Table("carporttab").Where("cid = ? and carportid =?", t.Cid, info.Carportid).Get(pro)
if err != nil { if err != nil {
session.Rollback() session.Rollback()
return err return err
@ -1485,8 +1488,9 @@ func (t *Chargetab) Del() error {
m.Chargetime = cinfo.Chargetime m.Chargetime = cinfo.Chargetime
t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, "")) t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, ""))
t2, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargeenddate, "")) t2, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargeenddate, ""))
lengthdate := utils.SubMonth(t2, t1)
m.Lengthdate = lengthdate
lengthdate := utils.TimeSub(t2, t1)
glog.InfoExt("更新合同", "缴费时长", lengthdate)
m.Lengthdate = utils.ValueToString(lengthdate,"") + "天"
_, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m) _, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m)
if err != nil { if err != nil {
session.Rollback() session.Rollback()
@ -1550,8 +1554,9 @@ func (t *Chargetab) Del() error {
m.Chargetime = cinfo.Chargetime m.Chargetime = cinfo.Chargetime
t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, "")) t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, ""))
t2, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargeenddate, "")) t2, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargeenddate, ""))
lengthdate := utils.SubMonth(t2, t1)
m.Lengthdate = lengthdate
lengthdate := utils.TimeSub(t2, t1)
glog.InfoExt("更新合同", "缴费时长", lengthdate)
m.Lengthdate = utils.ValueToString(lengthdate,"") + "天"
_, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m) _, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m)
if err != nil { if err != nil {
session.Rollback() session.Rollback()
@ -1713,8 +1718,23 @@ func (t *Chargetab) GetChargeArrearageData(cid int, pageIndex, pageSize int, yea
table = table.And("chargetab.chargetype = ?", chargeType) table = table.And("chargetab.chargetype = ?", chargeType)
} }
if !utils.ValueIsEmpty(propertyId) { if !utils.ValueIsEmpty(propertyId) {
query = query.And("chargetab.propertyid = ?", propertyId)
table = table.And("chargetab.propertyid = ?", propertyId)
switch chargeType {
case 1:
query = query.And("chargetab.propertyid = ?", propertyId)
table = table.And("chargetab.propertyid = ?", propertyId)
break
case 2:
query = query.And("chargetab.accesscardid = ?", propertyId)
table = table.And("chargetab.accesscardid = ?", propertyId)
break
case 3:
query = query.And("chargetab.carportid = ?", propertyId)
table = table.And("chargetab.carportid = ?", propertyId)
break
default:
}
} }
if start != "" { if start != "" {
query = query.And("chargetab.chargetime >= ? and chargetab.chargetime <= ?", start, end) query = query.And("chargetab.chargetime >= ? and chargetab.chargetime <= ?", start, end)


+ 6
- 66
web/models/contracttab.go View File

@ -2,12 +2,9 @@ package models
import ( import (
"errors" "errors"
"fmt"
"lapp_-wy/db" "lapp_-wy/db"
"lapp_-wy/utils" "lapp_-wy/utils"
"lapp_-wy/web/middleware/glog" "lapp_-wy/web/middleware/glog"
"strings"
"time"
"xorm.io/core" "xorm.io/core"
) )
@ -23,7 +20,7 @@ type Contracttab struct {
Createtime string `json:"createtime" xorm:"VARCHAR(20)"` Createtime string `json:"createtime" xorm:"VARCHAR(20)"`
Chargeway string `json:"chargeway" xorm:"VARCHAR(100)"` Chargeway string `json:"chargeway" xorm:"VARCHAR(100)"`
Createby string `json:"createby" xorm:"VARCHAR(20)"` Createby string `json:"createby" xorm:"VARCHAR(20)"`
Lengthdate int `json:"lengthdate" xorm:"INT(4)"`
Lengthdate string `json:"lengthdate" xorm:"VARCHAR(20)"`
Chargableexpense float64 `json:"chargableexpense" xorm:"DECIMAL(10,2)"` Chargableexpense float64 `json:"chargableexpense" xorm:"DECIMAL(10,2)"`
Chargedexpense float64 `json:"chargedexpense" xorm:"DECIMAL(10,2)"` Chargedexpense float64 `json:"chargedexpense" xorm:"DECIMAL(10,2)"`
Remake string `json:"remake" xorm:"VARCHAR(255)"` Remake string `json:"remake" xorm:"VARCHAR(255)"`
@ -41,7 +38,7 @@ func (t *Contracttab) Clipped() {
} }
//增加合同(同时添加缴费记录) //增加合同(同时添加缴费记录)
func (t *Contracttab) Add(me *ContractInfo, lengthdate float64) error {
func (t *Contracttab) Add(me *ContractInfo) error {
engine := db.MasterEngine() engine := db.MasterEngine()
session := engine.NewSession() session := engine.NewSession()
defer session.Close() defer session.Close()
@ -69,26 +66,7 @@ func (t *Contracttab) Add(me *ContractInfo, lengthdate float64) error {
} }
t.Serialnumber = serialnumber t.Serialnumber = serialnumber
t.Contractid = contractId t.Contractid = contractId
if utils.ValueIsEmpty(t.Begdate) {
t.Begdate = utils.TimeFormat(time.Now(), "yyyy-MM-dd")
//根据缴费金额计算出截止日期
addlenght := fmt.Sprintf("%0.2f", lengthdate)
addmonths := strings.Split(addlenght, ".")
adds := utils.ValueToFloat(addmonths[1], 0.0) * 0.3
adddays := utils.ValueToInt(adds, 0) - 1
endTime := time.Now().AddDate(0, utils.ValueToInt(addmonths[0], 0), adddays)
t.Enddate = utils.TimeFormat(endTime, "yyyy-MM-dd")
} else {
begtime, _ := utils.TimeParseyyyyMMdd(t.Begdate)
//根据缴费金额计算出截止日期
addlenght := fmt.Sprintf("%0.2f", lengthdate)
addmonths := strings.Split(addlenght, ".")
adds := utils.ValueToFloat(addmonths[1], 0.0) * 0.3
adddays := utils.ValueToInt(adds, 0) - 1
endTime := begtime.AddDate(0, utils.ValueToInt(addmonths[0], 0), adddays)
t.Enddate = utils.TimeFormat(endTime, "yyyy-MM-dd")
fmt.Println("t.endate:",t.Enddate)
}
_, err = session.Table("contracttab").Insert(t) _, err = session.Table("contracttab").Insert(t)
if err != nil { if err != nil {
session.Rollback() session.Rollback()
@ -245,8 +223,7 @@ func (t *Contracttab) Add(me *ContractInfo, lengthdate float64) error {
} }
//续签合同 //续签合同
func (t *Contracttab) Update(me *ContractInfo, lengthdate float64) error {
fmt.Println("lengthDate:", lengthdate)
func (t *Contracttab) Update(me *ContractInfo) error {
engine := db.MasterEngine() engine := db.MasterEngine()
session := engine.NewSession() session := engine.NewSession()
defer session.Close() defer session.Close()
@ -264,45 +241,6 @@ func (t *Contracttab) Update(me *ContractInfo, lengthdate float64) error {
return err return err
} }
t.Serialnumber = serialnumber t.Serialnumber = serialnumber
if utils.ValueIsEmpty(t.Begdate) {
fmt.Println("deal here")
begtime, _ := utils.TimeParseyyyyMMdd(t.Enddate)
Begdate := begtime.AddDate(0, 0, 1)
t.Begdate = utils.TimeFormat(Begdate, "yyyy-MM-dd")
//根据缴费金额计算出截止日期
addlenght := fmt.Sprintf("%0.2f", lengthdate)
addmonths := strings.Split(addlenght, ".")
adds := utils.ValueToFloat(addmonths[1], 0.0) * 0.3
adddays := utils.ValueToInt(adds, 0) - 1
endTime := begtime.AddDate(0, utils.ValueToInt(addmonths[0], 0), adddays)
t.Enddate = utils.TimeFormat(endTime, "yyyy-MM-dd")
} else {
fmt.Println("deal here2")
fmt.Println("t.Begdate:", t.Begdate)
begtime, _ := utils.TimeParseyyyyMMdd(t.Begdate)
fmt.Println("begtime:", begtime)
//根据缴费金额计算出截止日期
databaseBegtime, _ := utils.TimeParseyyyyMMdd(t.Enddate)
databaseBegtime = databaseBegtime.AddDate(0, 0, 1)
if begtime.Before(databaseBegtime) {
begtime = databaseBegtime
}
t.Begdate = utils.TimeFormat(begtime, "yyyy-MM-dd")
addlenght := fmt.Sprintf("%0.2f", lengthdate)
fmt.Println("addlenght:", addlenght)
addmonths := strings.Split(addlenght, ".")
fmt.Println("addmonths:", addlenght)
adds := utils.ValueToFloat(addmonths[1], 0.0) * 0.3
fmt.Println("adds:", adds)
adddays := utils.ValueToInt(adds, 0) - 1
fmt.Println("adddays:", adddays)
endTime := begtime.AddDate(0, utils.ValueToInt(addmonths[0], 0), adddays)
t.Enddate = utils.TimeFormat(endTime, "yyyy-MM-dd")
fmt.Println("begine date:", t.Begdate)
fmt.Println("enddate:", t.Enddate)
}
_, err = session.Table("contracttab").Cols("linkman", "mobile", "begdate", "enddate", "createtime", "createby", "lengthdate", "chargableexpense", "chargedexpense", "remake", "chargetime", "chargeway", "serialnumber").Where("cid = ? and contractid = ?", t.Cid, t.Contractid).Update(t) _, err = session.Table("contracttab").Cols("linkman", "mobile", "begdate", "enddate", "createtime", "createby", "lengthdate", "chargableexpense", "chargedexpense", "remake", "chargetime", "chargeway", "serialnumber").Where("cid = ? and contractid = ?", t.Cid, t.Contractid).Update(t)
if err != nil { if err != nil {
session.Rollback() session.Rollback()
@ -447,3 +385,5 @@ func (t *Contracttab) SelectOne() (Contracttab, error) {
} }
return data, nil return data, nil
} }

+ 1
- 0
web/routes/routes.go View File

@ -157,6 +157,7 @@ func Hub(app *iris.Application) {
//收费记录表 //收费记录表
chargetab := admin.Party("/chargetab") chargetab := admin.Party("/chargetab")
chargetab.Get("/listpage", controllers.GetChargeArrearageData) chargetab.Get("/listpage", controllers.GetChargeArrearageData)
chargetab.Get("/countmoney", controllers.GetChargeComputeMoney)
chargetab.Get("/datapage", controllers.GetChargetabListPage) chargetab.Get("/datapage", controllers.GetChargetabListPage)
chargetab.Get("/selectinfo", controllers.GetChargetab) chargetab.Get("/selectinfo", controllers.GetChargetab)
chargetab.Get("/totalyear", controllers.GetChargetabStatisticByYear) chargetab.Get("/totalyear", controllers.GetChargetabStatisticByYear)


Loading…
Cancel
Save