SJA工艺
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.
 

103 lines
3.4 KiB

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
}