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
|
|
}
|