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

469 lines
15 KiB

package models
import (
"lapp_-wy/db"
"lapp_-wy/utils"
"lapp_-wy/web/middleware/glog"
"xorm.io/core"
)
type CSurveysheet struct {
Cid int `json:"cid" xorm:"not null pk comment('公司ID') INT(11)"`
Cnr int `json:"cnr" xorm:"not null pk comment('小区编号') INT(11)"`
Surveysheetid string `json:"surveysheetid" xorm:"not null pk comment('调研问卷流水号') VARCHAR(40)"`
Descr string `json:"descr" xorm:"default 'NULL' comment('描述') VARCHAR(255)"`
Surveyyear string `json:"surveyyear" xorm:"not null comment('调研年份') VARCHAR(20)"`
Surveydate string `json:"surveydate" xorm:"not null comment('调研日期') DATE"`
Surveysamplecount int `json:"surveysamplecount" xorm:"not null comment('调研样例(问卷数)') INT(11)"`
Surveyfinishedcount int `json:"surveyfinishedcount" xorm:"default NULL comment('调研已完成数') INT(11)"`
Status int `json:"status" xorm:"default NULL comment('该调研问卷状态') INT(11)"`
Surveyperson string `json:"surveyperson" xorm:"default 'NULL' comment('调研人') VARCHAR(40)"`
Createtime string `json:"createtime" xorm:"default 'NULL' comment('创建时间') VARCHAR(40)"`
Lastmodifytime string `json:"lastmodifytime" xorm:"default 'NULL' comment('最近更新时间') VARCHAR(40)"`
Lastmodifyby string `json:"lastmodifyby" xorm:"default 'NULL' comment('修改人员') VARCHAR(40)"`
Valst []CSurveysheetSubjectlst `json:"valst" xorm:"-"`
}
type Cvalst struct {
SubjectType string `json:"subject_type"`
CSurveysheetSubjectlst []CSurveysheetSubjectlst `json:"c_surveysheet_subjectlst"`
}
func (t *CSurveysheet) TableName() string {
return "c_surveysheet"
}
// 清除string字段的右侧空格
func (t *CSurveysheet) Clipped() {
utils.TrimStruct(t, *t)
}
//增
func (t *CSurveysheet) Add() error {
engine := db.MasterEngine()
session := engine.NewSession()
defer session.Close()
// add Begin() before any action
err := session.Begin()
if err != nil {
return err
}
snr := new(Snrtab)
snr.Cid = t.Cid
id, err := snr.GetNextSnr("Sheetid")
if err != nil {
session.Rollback()
return err
}
//添加题目
Survey := new(CSurveysheet)
Survey.Cid = t.Cid
Survey.Cnr = t.Cnr
Survey.Surveysheetid = id
Survey.Descr = t.Descr
Survey.Status = t.Status
Survey.Surveyfinishedcount = t.Surveyfinishedcount
Survey.Surveysamplecount = t.Surveysamplecount
Survey.Surveydate = t.Surveydate
Survey.Surveyyear = t.Surveyyear
Survey.Surveyperson = t.Surveyperson
Survey.Lastmodifyby = t.Lastmodifyby
Survey.Createtime = t.Createtime
Survey.Lastmodifytime = t.Lastmodifytime
_, err = session.Table("c_surveysheet").Insert(Survey)
if err != nil {
glog.InfoExt("问题调研", "添加题目 err is :", err)
session.Rollback()
return err
}
pos := 0
//添加问题
for _, v := range t.Valst {
pos += 1
subject := new(CSurveysheetSubjectlst)
subject.Cid = t.Cid
subject.Cnr = t.Cnr
subject.Subjectid = v.Subjectid
subject.Pos = pos
subject.Surveysheetid = id
subject.Subjecttext = v.Subjecttext
subject.Subjectpicture = v.Subjectpicture
subject.Subjectvideo = v.Subjectvideo
subject.Subjecttype = v.Subjecttype
subject.SubjectCategoryid = v.SubjectCategoryid
subject.Condition = v.Condition
subject.Level = v.Level
subject.Fsubjectid = v.Fsubjectid
subject.Lastmodifyby = t.Lastmodifyby
subject.Createtime = t.Createtime
subject.Lastmodifytime = t.Lastmodifytime
_, err = session.Table("c_surveysheet_subjectlst").Insert(subject)
if err != nil {
glog.InfoExt("问题调研", "添加问题 err is :", err)
session.Rollback()
return err
}
//查询答题
datalist := make([]SubjectOptionlst, 0)
err = engine.Table("subject_optionlst").Where("cid = ? and subjectid = ?", t.Cid, v.Subjectid).Find(&datalist)
//构造数组
sheets := make([]CSurveysheetOptionlst, 0)
for _, vv := range datalist {
sheet := CSurveysheetOptionlst{}
sheet.Cid = t.Cid
sheet.Cnr = t.Cnr
sheet.Subjectid = vv.Subjectid
sheet.Surveysheetid = id
sheet.Optionid = vv.Optionid
sheet.Optiontext = vv.Optiontext
sheet.Optionpicture = vv.Optionpicture
sheet.Optionvideo = vv.Optionvideo
sheet.Optionvalue = vv.Optionvalue
sheet.Optionfactor = vv.Optionfactor
sheet.Optionvideo = t.Lastmodifyby
sheet.Optiontype = vv.Optiontype
sheet.Optioninput = vv.Optioninput
sheet.Createtime = t.Createtime
sheet.Lastmodifytime = t.Lastmodifytime
sheets = append(sheets, sheet)
}
//添加
_, err = session.Table("c_surveysheet_optionlst").Insert(&sheets)
if err != nil {
glog.InfoExt("问题调研", "添加 err is :", err)
session.Rollback()
return err
}
//查询是否有子题目
sub := new(Subject)
ok, err := engine.Table("subject").Where("cid = ? and fsubjectid = ?", t.Cid, v.Subjectid).Get(sub)
if err != nil {
session.Rollback()
return err
}
if ok {
//题目排序 +1
pos += 1
subj := new(CSurveysheetSubjectlst)
subj.Cid = t.Cid
subj.Cnr = t.Cnr
subj.Subjectid = sub.Subjectid
subj.Pos = pos
subj.Surveysheetid = id
subj.Level = 1
subj.Fsubjectid = v.Subjectid
subj.Condition = sub.Condition
subj.Subjecttext = sub.Subjecttext
subj.Subjectpicture = sub.Subjectpicture
subj.Subjectvideo = sub.Subjectvideo
subj.Subjecttype = sub.Subjecttype
subj.SubjectCategoryid = sub.SubjectCategoryid
subj.Lastmodifyby = t.Lastmodifyby
subj.Createtime = t.Createtime
subj.Lastmodifytime = t.Lastmodifytime
_, err = session.Table("c_surveysheet_subjectlst").Insert(subj)
if err != nil {
glog.InfoExt("问题调研", "添加问题 err is :", err)
session.Rollback()
return err
}
//查询答题
sdatalist := make([]SubjectOptionlst, 0)
err = engine.Table("subject_optionlst").Where("cid = ? and subjectid = ?", t.Cid, sub.Subjectid).Find(&sdatalist)
//构造数组
sonsheets := make([]CSurveysheetOptionlst, 0)
for _, vv := range sdatalist {
sonsheet := CSurveysheetOptionlst{}
sonsheet.Cid = t.Cid
sonsheet.Cnr = t.Cnr
sonsheet.Subjectid = vv.Subjectid
sonsheet.Surveysheetid = id
sonsheet.Optionid = vv.Optionid
sonsheet.Optiontext = vv.Optiontext
sonsheet.Optionpicture = vv.Optionpicture
sonsheet.Optionvideo = vv.Optionvideo
sonsheet.Optionvalue = vv.Optionvalue
sonsheet.Optionfactor = vv.Optionfactor
sonsheet.Optionvideo = t.Lastmodifyby
sonsheet.Optiontype = vv.Optiontype
sonsheet.Optioninput = vv.Optioninput
sonsheet.Createtime = t.Createtime
sonsheet.Lastmodifytime = t.Lastmodifytime
sonsheets = append(sonsheets, sonsheet)
}
//添加
_, err = session.Table("c_surveysheet_optionlst").Insert(&sonsheets)
if err != nil {
glog.InfoExt("问题调研", "添加 err is :", err)
session.Rollback()
return err
}
}
}
err = session.Commit()
if err != nil {
return err
}
return nil
}
//删
func (t *CSurveysheet) Del() error {
engine := db.MasterEngine()
session := engine.NewSession()
defer session.Close()
// add Begin() before any action
err := session.Begin()
if err != nil {
return err
}
//删除卷子
_, err = session.ID(core.PK{t.Cid, t.Cnr, t.Surveysheetid}).Delete(&CSurveysheet{})
if err != nil {
session.Rollback()
return err
}
//删除题目
_, err = session.Table("c_surveysheet_subjectlst").Where("cid = ? and cnr =? and surveysheetid = ?", t.Cid, t.Cnr, t.Surveysheetid).Delete(&CSurveysheetSubjectlst{})
if err != nil {
session.Rollback()
return err
}
//删除对应的题目选项
_, err = session.Table("c_surveysheet_optionlst").Where("cid = ? and cnr = ? and surveysheetid =?", t.Cid, t.Cnr, t.Surveysheetid).Delete(&SubjectOptionlst{})
if err != nil {
session.Rollback()
return err
}
err = session.Commit()
if err != nil {
return err
}
return nil
}
//改
func (t *CSurveysheet) Update() error {
engine := db.MasterEngine()
session := engine.NewSession()
defer session.Close()
// add Begin() before any action
err := session.Begin()
if err != nil {
return err
}
_, err = session.Table("c_surveysheet").ID(core.PK{t.Cid, t.Cnr, t.Surveysheetid}).Update(t)
if err != nil {
return err
}
//删除题目
_, err = session.Table("c_surveysheet_subjectlst").Where("cid = ? and cnr =? and surveysheetid = ?", t.Cid, t.Cnr, t.Surveysheetid).Delete(&CSurveysheetSubjectlst{})
if err != nil {
session.Rollback()
return err
}
//删除对应的题目选项
_, err = session.Table("c_surveysheet_optionlst").Where("cid = ? and cnr = ? and surveysheetid =?", t.Cid, t.Cnr, t.Surveysheetid).Delete(&SubjectOptionlst{})
if err != nil {
session.Rollback()
return err
}
pos := 0
//添加问题
for _, v := range t.Valst {
pos += 1
subject := new(CSurveysheetSubjectlst)
subject.Cid = t.Cid
subject.Cnr = t.Cnr
subject.Subjectid = v.Subjectid
subject.Pos = pos
subject.Surveysheetid = t.Surveysheetid
subject.Subjecttext = v.Subjecttext
subject.Subjectpicture = v.Subjectpicture
subject.Subjectvideo = v.Subjectvideo
subject.Subjecttype = v.Subjecttype
subject.SubjectCategoryid = v.SubjectCategoryid
subject.Condition = v.Condition
subject.Level = v.Level
subject.Fsubjectid = v.Fsubjectid
subject.Lastmodifyby = t.Lastmodifyby
subject.Createtime = t.Createtime
subject.Lastmodifytime = t.Lastmodifytime
_, err = session.Table("c_surveysheet_subjectlst").Insert(subject)
if err != nil {
glog.InfoExt("问题调研", "添加问题 err is :", err)
session.Rollback()
return err
}
//查询答题
datalist := make([]SubjectOptionlst, 0)
err = engine.Table("subject_optionlst").Where("cid = ? and subjectid = ?", t.Cid, v.Subjectid).Find(&datalist)
//构造数组
sheets := make([]CSurveysheetOptionlst, 0)
for _, vv := range datalist {
sheet := CSurveysheetOptionlst{}
sheet.Cid = t.Cid
sheet.Cnr = t.Cnr
sheet.Subjectid = vv.Subjectid
sheet.Surveysheetid = t.Surveysheetid
sheet.Optionid = vv.Optionid
sheet.Optiontext = vv.Optiontext
sheet.Optionpicture = vv.Optionpicture
sheet.Optionvideo = vv.Optionvideo
sheet.Optionvalue = vv.Optionvalue
sheet.Optionfactor = vv.Optionfactor
sheet.Optionvideo = t.Lastmodifyby
sheet.Optiontype = vv.Optiontype
sheet.Optioninput = vv.Optioninput
sheet.Createtime = t.Createtime
sheet.Lastmodifytime = t.Lastmodifytime
sheets = append(sheets, sheet)
}
//添加
_, err = session.Table("c_surveysheet_optionlst").Insert(&sheets)
if err != nil {
glog.InfoExt("问题调研", "添加 err is :", err)
session.Rollback()
return err
}
//查询是否有子题目
sub := new(Subject)
ok, err := engine.Table("subject").Where("cid = ? and fsubjectid = ?", t.Cid, v.Subjectid).Get(sub)
if err != nil {
session.Rollback()
return err
}
if ok {
//题目排序 +1
pos += 1
subj := new(CSurveysheetSubjectlst)
subj.Cid = t.Cid
subj.Cnr = t.Cnr
subj.Subjectid = sub.Subjectid
subj.Pos = pos
subj.Surveysheetid = t.Surveysheetid
subj.Level = 1
subj.Fsubjectid = v.Subjectid
subj.Condition = sub.Condition
subj.Subjecttext = sub.Subjecttext
subj.Subjectpicture = sub.Subjectpicture
subj.Subjectvideo = sub.Subjectvideo
subj.Subjecttype = sub.Subjecttype
subj.SubjectCategoryid = sub.SubjectCategoryid
subj.Lastmodifyby = t.Lastmodifyby
subj.Createtime = t.Createtime
subj.Lastmodifytime = t.Lastmodifytime
_, err = session.Table("c_surveysheet_subjectlst").Insert(subj)
if err != nil {
glog.InfoExt("问题调研", "添加问题 err is :", err)
session.Rollback()
return err
}
//查询答题
sdatalist := make([]SubjectOptionlst, 0)
err = engine.Table("subject_optionlst").Where("cid = ? and subjectid = ?", t.Cid, sub.Subjectid).Find(&sdatalist)
//构造数组
sonsheets := make([]CSurveysheetOptionlst, 0)
for _, vv := range sdatalist {
sonsheet := CSurveysheetOptionlst{}
sonsheet.Cid = t.Cid
sonsheet.Cnr = t.Cnr
sonsheet.Subjectid = vv.Subjectid
sonsheet.Surveysheetid = t.Surveysheetid
sonsheet.Optionid = vv.Optionid
sonsheet.Optiontext = vv.Optiontext
sonsheet.Optionpicture = vv.Optionpicture
sonsheet.Optionvideo = vv.Optionvideo
sonsheet.Optionvalue = vv.Optionvalue
sonsheet.Optionfactor = vv.Optionfactor
sonsheet.Optionvideo = t.Lastmodifyby
sonsheet.Optiontype = vv.Optiontype
sonsheet.Optioninput = vv.Optioninput
sonsheet.Createtime = t.Createtime
sonsheet.Lastmodifytime = t.Lastmodifytime
sonsheets = append(sonsheets, sonsheet)
}
//添加
_, err = session.Table("c_surveysheet_optionlst").Insert(&sonsheets)
if err != nil {
glog.InfoExt("问题调研", "添加 err is :", err)
session.Rollback()
return err
}
}
}
err = session.Commit()
if err != nil {
return err
}
return nil
}
//查卷子
func (t *CSurveysheet) SelectOne(level int) (CSurveysheet, error) {
e := db.MasterEngine()
var data CSurveysheet
_, err := e.ID(core.PK{t.Cid, t.Cnr, t.Surveysheetid}).Get(&data)
if err != nil {
return data, err
}
datalist := make([]CSurveysheetSubjectlst, 0)
if level > 0 {
err = e.Table("c_surveysheet_subjectlst").Where("cid = ? and cnr = ? and surveysheetid = ? and level != 1", t.Cid, t.Cnr, t.Surveysheetid).Asc("subjecttype").Find(&datalist)
} else {
err = e.Table("c_surveysheet_subjectlst").Where("cid = ? and cnr = ? and surveysheetid = ?", t.Cid, t.Cnr, t.Surveysheetid).Asc("subjecttype").Find(&datalist)
}
if err != nil {
return data, err
}
for k, v := range datalist {
list := make([]CSurveysheetOptionlst, 0)
err = e.Table("c_surveysheet_optionlst").Where("cid = ? and cnr = ? and surveysheetid = ? and subjectid = ?", t.Cid, t.Cnr, t.Surveysheetid, v.Subjectid).Find(&list)
if err != nil {
return data, err
}
datalist[k].Valst = list
}
data.Valst = datalist
return data, nil
}
//分页
func (t *CSurveysheet) GetPage(pageSize int, pageIndex int) ([]CSurveysheet, int, error) {
data := make([]CSurveysheet, 0)
e := db.MasterEngine()
query := e.Table("c_surveysheet").Where("cid = ? ", t.Cid)
table := e.Table("c_surveysheet").Where("cid = ? ", t.Cid)
if !utils.ValueIsEmpty(t.Descr) {
Subjecttext := "%" + t.Descr + "%"
query = query.And("descr like ?", Subjecttext)
table = table.And("descr like ?", Subjecttext)
}
if t.Status > 0 {
query = query.And("status = ?", t.Status)
table = table.And("status = ?", t.Status)
}
Offset := (pageIndex - 1) * pageSize
err := query.Limit(pageSize, Offset).Desc("createtime").Find(&data)
pcount := new(CSurveysheet)
count, err := table.Count(pcount)
if err != nil {
return data, 0, err
}
return data, int(count), nil
}
//查询调研问卷
func (t *CSurveysheet) SelectArr() (data []CSurveysheet, err error) {
e := db.MasterEngine()
err = e.Table("c_surveysheet").Where("cid = ?", t.Cid).Find(&data)
if err != nil {
return data, err
}
return data, nil
}