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 }