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