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

317 lines
9.4 KiB

package controllers
import (
"fmt"
"github.com/360EntSecGroup-Skylar/excelize"
"github.com/kataras/iris"
"lapp_-wy/utils"
"lapp_-wy/web/middleware/glog"
"lapp_-wy/web/middleware/jwts"
"lapp_-wy/web/models"
"lapp_-wy/web/supports"
"strings"
"time"
)
func InsertContracttab(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/Carporttab_controller.go"
logs.Level = "info"
logs.Function = "InsertContracttab"
logs.Message = "缴费"
logs.Operator = user.Userid
logs.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
logs.InsertRecord()
data := new(models.ContractInfo)
if err := ctx.ReadJSON(data); err != nil {
supports.Error(ctx, iris.StatusBadRequest, "json解析错误", nil)
return
}
var err error
_, err = utils.TimeParseyyyyMMdd(data.Chargetime)
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
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
}
fmt.Println("controller endate:", data.Enddate)
end, err := time.Parse("2006-01-02", data.Enddate)
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)
case 2:
//
lengthdate = data.Contracttab.Chargedexpense / data.Unitprice
//判断是否
access := new(models.Accesscardtab)
access.Cid = user.Pid
access.Propertyid = data.Propertyid
access.Status = 1
access.Propertytypeid = "电梯费"
access.Accesscardid = data.Accesscardid
access.Createtime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
access.Lastmodifytime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
access.Descr = "电梯卡费"
access.Lastmodifyby = user.Userid
err := access.Add()
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
case 3:
lengthdate = data.Contracttab.Chargedexpense / data.Unitprice
carport := new(models.Carporttab)
carport.Cid = user.Pid
carport.Cid = user.Pid
carport.Carportid = data.Carportid
_, err := carport.SelectOne()
if err != nil {
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)
}
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
supports.Ok(ctx, supports.OptionSuccess, "")
}
func UpdateContracttab(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/Carporttab_controller.go"
logs.Level = "info"
logs.Function = "UpdateContracttab"
logs.Message = "需交合同"
logs.Operator = user.Userid
logs.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
logs.InsertRecord()
data := new(models.ContractInfo)
if err := ctx.ReadJSON(data); err != nil {
supports.Error(ctx, iris.StatusBadRequest, "json解析错误", nil)
return
}
me := new(models.Contracttab)
me = &data.Contracttab
me.Chargableexpense = data.Contracttab.Chargedexpense
me.Cid = data.Cid
me.Chargetype = data.Chargetype
me.Mobile = data.Phone1
me.Linkman = data.Contact
lengthdate := 0.0
switch data.Chargetype {
case 1:
lengthdate = data.Contracttab.Chargedexpense / data.Unitprice / data.Constructionarea
case 2:
lengthdate = data.Contracttab.Chargedexpense / data.Unitprice
case 3:
lengthdate = data.Contracttab.Chargedexpense / data.Unitprice
default:
lengthdate = data.Contracttab.Chargedexpense / data.Unitprice
}
me.Lengthdate = utils.ValueToInt(fmt.Sprintf("%0.0f", lengthdate), 0)
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)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, "更新失败", nil)
return
}
supports.Ok(ctx, "续交成功", "")
}
//上传excel
func ExcelContracttab(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
utils.TrimStruct(user, *user)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
//获取通过iris.WithPostMaxMemory获取的最大上传值大小。
maxSize := ctx.Application().ConfigurationReadOnly().GetPostMaxMemory()
err := ctx.Request().ParseMultipartForm(maxSize)
if err != nil {
ctx.StatusCode(iris.StatusInternalServerError)
ctx.WriteString(err.Error())
return
}
form := ctx.Request().MultipartForm
files := form.File["upload[]"]
guid := utils.MakeOrderSn("test")
savePath := "web/public/uploadxlsx/" + guid + ".xlsx"
for _, file := range files {
// 上传文件至指定目录
err := utils.SaveUploadedFile(file, savePath)
if err != nil {
return
}
}
xlsx, err := excelize.OpenFile(savePath)
if err != nil {
return
}
rows := xlsx.GetRows("Sheet1")
for _, v := range rows {
info := new(models.Propertytab)
info.Cid = user.Pid
info.Propertyid = utils.ValueToString(v[0], "")
infodata, err := info.SelectOne()
if err != nil {
continue
}
glog.InfoExtln("导入合同", "Propertyid", info.Propertyid)
data := new(models.ContractInfo)
data.Propertyid = strings.TrimSpace(utils.ValueToString(v[0], ""))
me := new(models.Contracttab)
//取整
glog.InfoExtln("导入合同", "缴费金额", v[3])
money := fmt.Sprintf("%.0f",utils.ValueToFloat(v[3], 0.0))
glog.InfoExtln("导入合同", "缴费金额保留一位小数",money)
me.Chargableexpense = utils.ValueToFloat(money, 0.0)
me.Chargedexpense = utils.ValueToFloat(money, 0.0)
glog.InfoExtln("导入合同", "Chargedexpense",me.Chargedexpense)
me.Cid = user.Pid
me.Chargetype = 1
tt1 := utils.ValueToString(strings.TrimSpace(v[1]), "")
tt2 := utils.ValueToString(strings.TrimSpace(v[2]), "")
ttt1 := strings.Split(tt1, ".")
if len(strings.TrimSpace(ttt1[1])) == 1 {
ttt1[1] = "0" + strings.TrimSpace(ttt1[1])
}
if len(strings.Trim(ttt1[2], "")) == 1 {
ttt1[2] = "0" + strings.TrimSpace(ttt1[2])
}
ttt2 := strings.Split(tt2, ".")
if len(strings.TrimSpace(ttt2[1])) == 1 {
ttt2[1] = "0" + strings.TrimSpace(ttt2[1])
}
if len(strings.TrimSpace(ttt2[2])) == 1 {
ttt2[2] = "0" + strings.TrimSpace(ttt2[2])
}
tt1 = ttt1[0] + "-" + ttt1[1] + "-" + ttt1[2]
tt2 = ttt2[0] + "-" + ttt2[1] + "-" + ttt2[2]
me.Mobile = infodata.Phone1
me.Linkman = infodata.Contact
me.Begdate = strings.TrimSpace(tt1)
tt3 := utils.ValueToString(v[5], "")
ttt3 := strings.Split(tt3, ".")
if len(strings.TrimSpace(ttt3[1])) == 1 {
ttt3[1] = "0" + strings.TrimSpace(ttt3[1])
}
if len(strings.TrimSpace(ttt3[2])) == 1 {
ttt3[2] = "0" + strings.TrimSpace(ttt3[2])
}
tt3 = ttt3[0] + "-" + ttt3[1] + "-" + ttt3[2]
me.Chargetime = strings.TrimSpace(tt3)
me.Createtime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
me.Createby = utils.ValueToString(v[4], "")
//lengthdays := utils.TimeSub(t2, t1)
//lengthday := utils.ValueToFloat(lengthdays, 0.0) / 30
//查询楼栋信息
build := new(models.Buildingtab)
build.Cid = me.Cid
build.Buildingid = infodata.Buildingid
builds, err := build.SelectOne()
if err != nil {
glog.InfoExtln("导入合同", "err is:", err)
}
//查询物业费
pro := new(models.Propertytypetab)
pro.Cid = me.Cid
pro.Propertytypeid = builds.Propertytypeid
price, err := pro.SelectOne()
if err != nil {
glog.InfoExtln("导入合同", "err is:", err)
}
lengthdays := me.Chargedexpense / price.Unitprice / infodata.Constructionarea
me.Lengthdate = utils.ValueToInt(fmt.Sprintf("%0.0f", lengthdays), 0)
glog.InfoExtln("导入合同", "Propertyid", infodata.Propertyid)
glog.InfoExtln("导入合同", "tt1", tt1)
glog.InfoExtln("导入合同", "tt2", tt2)
glog.InfoExtln("导入合同", "Chargedexpense", me.Chargedexpense)
glog.InfoExtln("导入合同", "Unitprice", price.Unitprice)
glog.InfoExtln("导入合同", "Constructionarea", infodata.Constructionarea)
glog.InfoExtln("导入合同", "lengthdays", lengthdays)
glog.InfoExtln("导入合同", "Lengthdate", me.Lengthdate)
data.Chargetime = me.Chargetime
if utils.ValueIsEmpty(infodata.Contractid) {
err = me.Add(data, lengthdays)
} else {
err = me.Update(data, lengthdays)
}
if err != nil {
glog.InfoExtln("导入合同", "err", err)
continue
}
}
return
}