package models import ( "LAPP_SJA_ME/db" "LAPP_SJA_ME/utils" "xorm.io/core" ) type MePartgroupPartlst struct { Finr int `xorm:"pk comment('工厂号') int(0)" json:"me_partgroup_partlst-finr"` Partid string `xorm:"pk comment('零件Id') VARCHAR(40)" json:"me_partgroup_partlst-partid"` Projnr string `xorm:"pk comment('项目Id') VARCHAR(40)" json:"me_partgroup_partlst-projnr"` Partgroupid string `xorm:"pk comment('零件Id') VARCHAR(40)" json:"me_partgroup_partlst-partgroupid"` Pos int `xorm:"comment('位置') int(0)" json:"me_partgroup_partlst-pos"` Lastmodif string `xorm:"comment('最近一次更改时间') VARCHAR(14)" json:"me_partgroup_partlst-lastmodif"` Lastuser string `xorm:"comment('最近一次更改人') VARCHAR(14)" json:"me_partgroup_partlst-lastuser"` Credatuz string `xorm:"comment('创建时间') VARCHAR(20)" json:"me_partgroup_partlst-credatuz"` } func (t *MePartgroupPartlst) TableName() string { return "me_partgroup_partlst" } // 清除string字段的右侧空格 func (t *MePartgroupPartlst) Clipped() { utils.TrimStruct(t, *t) } //分配显示 func (t *MePartgroupPartlst) SelectPartGroup() (MePartgroup, error) { e := db.Eloquent.Master() var data MePartgroup _, err := e.ID(core.PK{t.Finr, t.Partgroupid,t.Projnr}).Get(&data) if err != nil { return data, err } data.Clipped() var datalist []MePart var undatalist []MePart var temdatalist []MePart var temlist []MePartgroupPartlst //联查出当前模块已分配的零件 err = e.Table("me_part").Join("left", "me_partgroup_partlst", "me_partgroup_partlst.finr=me_part.finr and me_partgroup_partlst.partid=me_part.partid and me_partgroup_partlst.projnr = me_part.projnr").Where("me_partgroup_partlst.partgroupid = ? and me_part.projnr = ? and me_part.finr = ?", t.Partgroupid, data.Projnr, t.Finr).Find(&datalist) for k, _ := range datalist { datalist[k].Clipped() } data.PartValst = datalist //查询出已分配的所有的零件 err = e.Table("me_partgroup_partlst").Where("me_partgroup_partlst.projnr = ? and me_partgroup_partlst.finr = ?", data.Projnr, t.Finr).Find(&temlist) //构造数据 temlistkey := map[string]interface{}{} for _, v := range temlist { v.Clipped() key := v.Projnr + v.Partid temlistkey[key] = v } //查询出所有的零件 err = e.Table("me_part").Where("me_part.projnr = ? and me_part.finr = ?", data.Projnr, t.Finr).Find(&temdatalist) for _, v := range temdatalist { v.Clipped() key := v.Projnr + v.Partid _, ok := temlistkey[key] if !ok { undatalist = append(undatalist, v) } } data.UnPartValst = undatalist return data, nil } //保存 func (t *MePartgroupPartlst) SavePartGroup(group *MePartgroup) bool { e := db.Eloquent.Master() //批量删除 _, err := e.Table("me_partgroup_partlst").Where("finr = ? and projnr = ? and partgroupid = ?", t.Finr, group.Projnr, group.Partgroupid).Delete(&MePartgroupPartlst{}) if err != nil { return false } //批量插入 alldata := make([]MePartgroupPartlst, 0) for _, v := range group.PartValst { onedata := MePartgroupPartlst{} onedata.Finr = t.Finr onedata.Partgroupid = group.Partgroupid onedata.Partid = v.Partid onedata.Projnr = v.Projnr onedata.Credatuz = t.Credatuz onedata.Lastuser = t.Lastuser onedata.Lastmodif = t.Lastmodif alldata = append(alldata, onedata) } _, err = e.Table("me_partgroup_partlst").Insert(&alldata) if err != nil { return false } return true }