diff --git a/utils/time.go b/utils/time.go index d2982a5..04edb60 100644 --- a/utils/time.go +++ b/utils/time.go @@ -2,6 +2,7 @@ package utils import ( "errors" + "fmt" "log" "math" "strconv" @@ -285,17 +286,26 @@ func Timelen(t1 string, t2 string) (int, error) { //获取某一天的0点时间 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 } //返回格式:例如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() currentLocation := now.Location() firstOfMonth := time.Date(currentYear, currentMonth, 1, 0, 0, 0, 0, currentLocation) 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() currentLocation := now.Location() 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) } +//返回当前时间所在月份的天数 +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) { 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 - time1,_ := TimeParseyyyyMMdd(t1) - time2,_ := TimeParseyyyyMMdd(t2) + time1, _ := TimeParseyyyyMMdd(t1) + time2, _ := TimeParseyyyyMMdd(t2) ut1 := time1.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 tm := time.Unix(timestamp, 0) - str := TimeFormat(tm,"yyyyMMdd") - data = append(data,str) + str := TimeFormat(tm, "yyyyMMdd") + data = append(data, str) } return data } //计算时间日历(日期) -func SelectMonth(t1 string,t2 string) []string{ +func SelectMonth(t1 string, t2 string) []string { var data []string - time1,_ := TimeParseyyyyMMdd(t1) - time2,_ := TimeParseyyyyMMdd(t2) + time1, _ := TimeParseyyyyMMdd(t1) + time2, _ := TimeParseyyyyMMdd(t2) ut1 := time1.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 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) return data -} \ No newline at end of file +} + +//计算天数的金额 +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 + } + +} diff --git a/web/controllers/chargetab_controller.go b/web/controllers/chargetab_controller.go index 49b3e80..24813da 100644 --- a/web/controllers/chargetab_controller.go +++ b/web/controllers/chargetab_controller.go @@ -519,6 +519,45 @@ func GetChargeArrearageData(ctx iris.Context) { 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) { user, ok := jwts.ParseToken(ctx) diff --git a/web/controllers/contracttab_controller.go b/web/controllers/contracttab_controller.go index cb8d223..00d85fe 100644 --- a/web/controllers/contracttab_controller.go +++ b/web/controllers/contracttab_controller.go @@ -39,32 +39,61 @@ func InsertContracttab(ctx iris.Context) { if err != nil { 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 { 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 { supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) return } - days := (end.Unix() - start.Unix()) / (86400*30) - fmt.Println("days:", days) - lengthdate = float64(days) + supports.Ok(ctx, supports.OptionSuccess, "") case 2: - // - lengthdate = data.Contracttab.Chargedexpense / data.Unitprice + /******* + *Chargetype : 电梯费 + *lengthdate : 缴费时长 + **************/ + lengthdate := data.Contracttab.Chargedexpense / data.Unitprice //判断是否 access := new(models.Accesscardtab) access.Cid = user.Pid @@ -90,9 +119,43 @@ func InsertContracttab(ctx iris.Context) { supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil) return } + me := new(models.Contracttab) + me.Cid = data.Cid + me.Chargetype = data.Chargetype + me.Chargeway = data.Contracttab.Chargeway 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: - lengthdate = data.Contracttab.Chargedexpense / data.Unitprice + /******* + *Chargetype : 车位费 + *lengthdate : 缴费时长 + **************/ + lengthdate := data.Contracttab.Chargedexpense / data.Unitprice carport := new(models.Carporttab) 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) 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) { @@ -171,13 +240,13 @@ func UpdateContracttab(ctx iris.Context) { 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.Createtime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss") if utils.ValueIsEmpty(me.Createby) { me.Createby = user.Name } - err := me.Update(data, lengthdate) + err := me.Update(data) if err != nil { supports.Error(ctx, iris.StatusBadRequest, "更新失败", nil) return @@ -301,7 +370,7 @@ func ExcelContracttab(ctx iris.Context) { glog.InfoExtln("导入合同", "err is:", err) } 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("导入合同", "tt1", tt1) glog.InfoExtln("导入合同", "tt2", tt2) @@ -312,9 +381,9 @@ func ExcelContracttab(ctx iris.Context) { glog.InfoExtln("导入合同", "Lengthdate", me.Lengthdate) data.Chargetime = me.Chargetime if utils.ValueIsEmpty(infodata.Contractid) { - err = me.Add(data, lengthdays) + err = me.Add(data) } else { - err = me.Update(data, lengthdays) + err = me.Update(data) } if err != nil { diff --git a/web/models/accesscardtab.go b/web/models/accesscardtab.go index 541561d..333dabb 100644 --- a/web/models/accesscardtab.go +++ b/web/models/accesscardtab.go @@ -120,6 +120,8 @@ type ContractInfo struct { Unit string `json:"unit"` Chargeway string `json:"chargeway"` Room string `json:"room"` + Months int `json:"months"` + Days int `json:"days"` Constructionarea float64 `json:"constructionarea"` Usearea string `json:"usearea"` Contact string `json:"contact"` diff --git a/web/models/chargetab.go b/web/models/chargetab.go index 85c1f8a..643c5e7 100644 --- a/web/models/chargetab.go +++ b/web/models/chargetab.go @@ -1101,11 +1101,12 @@ func (t *Chargetab) Update() error { m.Createby = t.Chargeby t1, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargestartdate, "")) t2, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargeenddate, "")) + glog.InfoExt("更新合同", "开始日期", t1) glog.InfoExt("更新合同", "结束日期", t2) - lengthdate := utils.SubMonth(t2, t1) + lengthdate := utils.TimeSub(t2, t1) glog.InfoExt("更新合同", "缴费时长", lengthdate) - m.Lengthdate = lengthdate + m.Lengthdate = utils.ValueToString(lengthdate,"") + "天" _, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m) if err != nil { session.Rollback() @@ -1136,9 +1137,9 @@ func (t *Chargetab) Update() error { m.Createby = t.Chargeby t1, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargestartdate, "")) t2, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargeenddate, "")) - lengthdate := utils.SubMonth(t2, t1) + lengthdate := utils.TimeSub(t2, t1) glog.InfoExt("更新合同", "缴费时长", lengthdate) - m.Lengthdate = lengthdate + m.Lengthdate = utils.ValueToString(lengthdate,"") + "天" _, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m) if err != nil { session.Rollback() @@ -1169,9 +1170,9 @@ func (t *Chargetab) Update() error { m.Createby = t.Chargeby t1, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargestartdate, "")) t2, err := utils.TimeParseyyyyMMdd(strings.Trim(t.Chargeenddate, "")) - lengthdate := utils.SubMonth(t2, t1) + lengthdate := utils.TimeSub(t2, t1) glog.InfoExt("更新合同", "缴费时长", lengthdate) - m.Lengthdate = lengthdate + m.Lengthdate = utils.ValueToString(lengthdate,"") + "天" _, err = session.Table("contracttab").ID(core.PK{t.Cid, pro.Contractid}).Update(m) if err != nil { session.Rollback() @@ -1270,8 +1271,9 @@ func (t *Chargetab) Del() error { t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, "")) t2, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargeenddate, "")) 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) if err != nil { session.Rollback() @@ -1361,7 +1363,7 @@ func (t *Chargetab) Del() error { } //查询合同编号 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 { session.Rollback() return err @@ -1377,8 +1379,9 @@ func (t *Chargetab) Del() error { m.Chargetime = cinfo.Chargetime t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, "")) 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) if err != nil { session.Rollback() @@ -1469,7 +1472,7 @@ func (t *Chargetab) Del() error { } //查询合同编号 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 { session.Rollback() return err @@ -1485,8 +1488,9 @@ func (t *Chargetab) Del() error { m.Chargetime = cinfo.Chargetime t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, "")) 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) if err != nil { session.Rollback() @@ -1550,8 +1554,9 @@ func (t *Chargetab) Del() error { m.Chargetime = cinfo.Chargetime t1, err := utils.TimeParseyyyyMMdd(strings.Trim(cinfo.Chargestartdate, "")) 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) if err != nil { session.Rollback() @@ -1713,8 +1718,23 @@ func (t *Chargetab) GetChargeArrearageData(cid int, pageIndex, pageSize int, yea table = table.And("chargetab.chargetype = ?", chargeType) } 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 != "" { query = query.And("chargetab.chargetime >= ? and chargetab.chargetime <= ?", start, end) diff --git a/web/models/contracttab.go b/web/models/contracttab.go index 14933bb..40d60a3 100644 --- a/web/models/contracttab.go +++ b/web/models/contracttab.go @@ -2,12 +2,9 @@ package models import ( "errors" - "fmt" "lapp_-wy/db" "lapp_-wy/utils" "lapp_-wy/web/middleware/glog" - "strings" - "time" "xorm.io/core" ) @@ -23,7 +20,7 @@ type Contracttab struct { Createtime string `json:"createtime" xorm:"VARCHAR(20)"` Chargeway string `json:"chargeway" xorm:"VARCHAR(100)"` 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)"` Chargedexpense float64 `json:"chargedexpense" xorm:"DECIMAL(10,2)"` 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() session := engine.NewSession() defer session.Close() @@ -69,26 +66,7 @@ func (t *Contracttab) Add(me *ContractInfo, lengthdate float64) error { } t.Serialnumber = serialnumber 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) if err != nil { 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() session := engine.NewSession() defer session.Close() @@ -264,45 +241,6 @@ func (t *Contracttab) Update(me *ContractInfo, lengthdate float64) error { return err } 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) if err != nil { session.Rollback() @@ -447,3 +385,5 @@ func (t *Contracttab) SelectOne() (Contracttab, error) { } return data, nil } + + diff --git a/web/routes/routes.go b/web/routes/routes.go index 15190f2..ab26090 100644 --- a/web/routes/routes.go +++ b/web/routes/routes.go @@ -157,6 +157,7 @@ func Hub(app *iris.Application) { //收费记录表 chargetab := admin.Party("/chargetab") chargetab.Get("/listpage", controllers.GetChargeArrearageData) + chargetab.Get("/countmoney", controllers.GetChargeComputeMoney) chargetab.Get("/datapage", controllers.GetChargetabListPage) chargetab.Get("/selectinfo", controllers.GetChargetab) chargetab.Get("/totalyear", controllers.GetChargetabStatisticByYear)