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