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.
 

298 lines
10 KiB

package models
import (
"LAPP_SJA_ME/db"
"LAPP_SJA_ME/utils"
"xorm.io/core"
"errors"
)
//零件供应组
type MeSupplyGroup struct {
Finr int `xorm:"pk comment('工厂号') int(0)" json:"me_supplygroup-finr"`
Supplygroupid string `xorm:"pk comment('供应组Id') VARCHAR(20)" json:"me_supplygroup-supplygroupid"`
Descr string `xorm:"comment('描述') VARCHAR(40)" json:"me_supplygroup-descr"`
Sgtype string `xorm:"comment('供应组类型') VARCHAR(20)" json:"me_supplygroup-sgtype"`
Shippablesg int `xorm:"comment('用于包装发运') int(0)" json:"me_supplygroup-shippablesg"`
Multioutput int `xorm:"comment('生成多个WD') int(0)" json:"me_supplygroup-multioutput"`
Modfactor int `xorm:"comment('除余因子') int(0)" json:"me_supplygroup-modfactor"`
Fsupplygroupid string `xorm:"comment('父零件族Id') VARCHAR(20)" json:"me_supplygroup-fsupplygroupid"`
Partfamilyid string `xorm:"comment('零件族Id') VARCHAR(20)" json:"me_supplygroup-partfamilyid"`
Worklineid string `xorm:"comment('生产线ID') Int" json:"me_supplygroup-worklineid"`
SgCust1 string `xorm:"comment('生产提前期/秒') VARCHAR(40)" json:"me_supplygroup-sg_cust1"`
SgCust2 string `xorm:"comment('供应组特性2') VARCHAR(40)" json:"me_supplygroup-sg_cust2"`
SgCust3 string `xorm:"comment('供应组特性3') VARCHAR(40)" json:"me_supplygroup-sg_cust3"`
SgCust4 string `xorm:"comment('供应组特性4') VARCHAR(40)" json:"me_supplygroup-sg_cust4"`
Lastmodif string `xorm:"comment('最近一次更改时间') VARCHAR(14)" json:"me_supplygroup-lastmodif"`
Lastuser string `xorm:"comment('最近一次更改人') VARCHAR(20)" json:"me_supplygroup-lastuser"`
Credatuz string `xorm:"comment('创建时间') VARCHAR(14)" json:"me_supplygroup-credatuz"`
Valst []MeAttribute `json:"valst" xorm:"-"`
UnValst []MeAttribute `json:"unvalst" xorm:"-"`
FValst []MeSupplyGroup `json:"f_valst" xorm:"-"`
FUnvalst []MeSupplyGroup `json:"f_unvalst" xorm:"-"`
Assignqty int `json:"assignqty" xorm:"-"`
Assignfactor1 string `json:"assignfactor1" xorm:"-"`
Assignfactor2 string `json:"assignfactor2" xorm:"-"`
}
func (t *MeSupplyGroup) TableName() string {
return "me_supplygroup"
}
// 清除string字段的右侧空格
func (t *MeSupplyGroup) Clipped() {
utils.TrimStruct(t, *t)
}
//增
func (t *MeSupplyGroup) Add() error {
e := db.Eloquent.Master()
countrole := new(MeSupplyGroup)
affw, err := e.Table("me_supplygroup").ID(core.PK{t.Finr, t.Supplygroupid}).Count(countrole)
if err != nil {
return err
}
if affw > 0 {
return errors.New("数据已经存在!")
}
_, err = e.Table("me_supplygroup").Insert(t)
if err != nil {
return err
}
//批量插入
alldata := make([]MeSupplyGroupAtcodlst, 0)
for _, v := range t.Valst {
onedata := MeSupplyGroupAtcodlst{}
onedata.Finr = t.Finr
onedata.Supplygroupid = t.Supplygroupid
onedata.Attrvalue1 = v.Attrvalue1
onedata.Attrvalue2 = v.Attrvalue2
onedata.Attrcode = v.Attrcode
onedata.Mandatory = v.Mandatory
onedata.Verifyrule = v.Verifyrule
onedata.Credatuz = t.Credatuz
onedata.Lastuser = t.Lastuser
onedata.Lastmodif = t.Lastmodif
alldata = append(alldata, onedata)
}
_, err = e.Table("me_supplygroup_atcodlst").Insert(&alldata)
//判断是否是父供应组
if t.Sgtype == "F" {
//批量插入
fdata := make([]MeSupplyGroupAssignment, 0)
for k, v := range t.FValst {
onedata := MeSupplyGroupAssignment{}
onedata.Finr = t.Finr
onedata.Supplygroupid = v.Supplygroupid
onedata.Fsupplygroupid = t.Supplygroupid
onedata.Pos = k + 1
onedata.Assignfactor1 = v.Assignfactor1
onedata.Assignfactor2 = v.Assignfactor2
onedata.Credatuz = t.Credatuz
onedata.Lastuser = t.Lastuser
onedata.Lastmodif = t.Lastmodif
fdata = append(fdata, onedata)
}
_, err = e.Table("me_supplygroup_assignment").Insert(&fdata)
if err != nil {
return err
}
}
if err != nil {
return err
}
return nil
}
//删
func (t *MeSupplyGroup) Del() bool {
e := db.Eloquent.Master()
_, err := e.Table("me_supplygroup").Where("finr = ? and supplygroupid = ?", t.Finr, t.Supplygroupid).Delete(&MeSupplyGroup{})
if err != nil {
return false
}
countrole := new(MeSupplyGroupAtcodlst)
affw, _ := e.Table("me_supplygroup_atcodlst").Where("finr = ? and supplygroupid = ?", t.Finr, t.Supplygroupid).Count(countrole)
if affw > 0 {
_, err = e.Table("me_supplygroup_atcodlst").Where("finr = ? and supplygroupid = ?", t.Finr, t.Supplygroupid).Delete(&MeSupplyGroupAtcodlst{})
if err != nil {
return false
}
}
return true
}
//改
func (t *MeSupplyGroup) Update() bool {
e := db.Eloquent.Master()
_, err := e.ID(core.PK{t.Finr, t.Supplygroupid}).Update(t)
if err != nil {
return false
}
//批量删除
_, err = e.Table("me_supplygroup_atcodlst").Where("finr = ? and supplygroupid = ?", t.Finr, t.Supplygroupid).Delete(&MeSupplyGroupAtcodlst{})
if err != nil {
return false
}
//批量插入
alldata := make([]MeSupplyGroupAtcodlst, 0)
for _, v := range t.Valst {
onedata := MeSupplyGroupAtcodlst{}
onedata.Finr = t.Finr
onedata.Supplygroupid = t.Supplygroupid
onedata.Attrvalue1 = v.Attrvalue1
onedata.Attrvalue2 = v.Attrvalue2
onedata.Attrcode = v.Attrcode
onedata.Mandatory = v.Mandatory
onedata.Verifyrule = v.Verifyrule
onedata.Credatuz = t.Credatuz
onedata.Lastuser = t.Lastuser
onedata.Lastmodif = t.Lastmodif
alldata = append(alldata, onedata)
}
_, err = e.Table("me_supplygroup_atcodlst").Insert(&alldata)
if err != nil {
return false
}
//判断是否是父供应组
if t.Sgtype == "F" {
//批量删除
_, err = e.Table("me_supplygroup_assignment").Where("finr = ? and fsupplygroupid = ?", t.Finr, t.Supplygroupid).Delete(&MeSupplyGroupAssignment{})
if err != nil {
return false
}
//批量插入
fdata := make([]MeSupplyGroupAssignment, 0)
for k, v := range t.FValst {
onedata := MeSupplyGroupAssignment{}
onedata.Finr = t.Finr
onedata.Supplygroupid = v.Supplygroupid
onedata.Fsupplygroupid = t.Supplygroupid
onedata.Pos = k + 1
onedata.Assignfactor1 = v.Assignfactor1
onedata.Assignfactor2 = v.Assignfactor2
onedata.Credatuz = t.Credatuz
onedata.Lastuser = t.Lastuser
onedata.Lastmodif = t.Lastmodif
fdata = append(fdata, onedata)
}
_, err = e.Table("me_supplygroup_assignment").Insert(&fdata)
if err != nil {
return false
}
}
return true
}
type MesupplygroupAttribute struct {
MeAttribute `xorm:"extends"`
MeSupplyGroupAtcodlst `xorm:"extends"`
}
type MesupplygroupAssignment struct {
MeSupplyGroup `xorm:"extends"`
MeSupplyGroupAssignment `xorm:"extends"`
}
//查
func (t *MeSupplyGroup) SelectOne() (MeSupplyGroup, error) {
e := db.Eloquent.Master()
var data MeSupplyGroup
_, err := e.ID(core.PK{t.Finr, t.Supplygroupid}).Get(&data)
if err != nil {
return data, err
}
data.Clipped()
var datalist []MeAttribute
var alllist []MesupplygroupAttribute
e.Table("me_attribute").Join("LEFT", "me_supplygroup_atcodlst", "me_supplygroup_atcodlst.attrcode = me_attribute.attrcode").Where("me_attribute.finr = ? and me_supplygroup_atcodlst.supplygroupid = ?", t.Finr, t.Supplygroupid).Find(&alllist)
var attrcodes []int
for _, v := range alllist {
v.MeAttribute.Clipped()
v.MeSupplyGroupAtcodlst.Clipped()
one := MeAttribute{}
one = v.MeAttribute
one.Mandatory = v.MeSupplyGroupAtcodlst.Mandatory
one.Attrvalue1 = v.MeSupplyGroupAtcodlst.Attrvalue1
one.Attrvalue2 = v.MeSupplyGroupAtcodlst.Attrvalue2
one.Verifyrule = v.MeSupplyGroupAtcodlst.Verifyrule
datalist = append(datalist, one)
attrcodes = append(attrcodes, v.MeAttribute.Attrcode)
}
data.Valst = datalist
var me MeAttribute
me.Finr = t.Finr
UnValst, _ := me.SelectUnArr(attrcodes)
for k, _ := range UnValst {
UnValst[k].Clipped()
}
data.UnValst = UnValst
//判断是否是父供应组
if data.Sgtype == "F" {
fdatalist := make([]MeSupplyGroup, 0)
falllist := make([]MesupplygroupAssignment, 0)
err := e.Table("me_supplygroup").Join("LEFT", "me_supplygroup_assignment", "me_supplygroup_assignment.supplygroupid = me_supplygroup.supplygroupid and me_supplygroup_assignment.finr = me_supplygroup.finr").Where("me_supplygroup.finr = ? and me_supplygroup_assignment.fsupplygroupid = ?", t.Finr, t.Supplygroupid).Find(&falllist)
if err != nil {
return data, err
}
for _, v := range falllist {
v.MeSupplyGroup.Clipped()
v.MeSupplyGroupAssignment.Clipped()
one := MeSupplyGroup{}
one = v.MeSupplyGroup
fdatalist = append(fdatalist, one)
}
data.FValst = fdatalist
UnValst, _ := t.SelectUnArr()
data.FUnvalst = UnValst
}
return data, nil
}
func (t *MeSupplyGroup) SelectUnArr() (data []MeSupplyGroup, err error) {
e := db.Eloquent.Master()
var groupids []string
datalist := make([]MeSupplyGroupAssignment, 0)
err = e.Table("me_supplygroup_assignment").Where("finr = ?", t.Finr).Find(&datalist)
if err != nil {
return data, err
}
for _, v := range datalist {
groupids = append(groupids, v.Supplygroupid)
}
err = e.Where("finr = ? and sgtype = ?", t.Finr, "C").NotIn("supplygroupid", groupids).Find(&data)
if err != nil {
return data, err
}
for k, _ := range data {
data[k].Clipped()
}
return data, nil
}
//分页
func (t *MeSupplyGroup) GetPage(pageSize int, pageIndex int) ([]MeSupplyGroup, int, error) {
data := make([]MeSupplyGroup, 0)
e := db.Eloquent.Master()
table := e.Table("me_supplygroup").Where("finr = ? ", t.Finr)
where := "where finr = " + "'" + utils.ValueToString(t.Finr, "") + "'"
if t.Supplygroupid != "" {
table = table.And("supplygroupid = ?", t.Supplygroupid)
where += " and supplygroupid = " + "'" + utils.ValueToString(t.Supplygroupid, "") + "'"
}
Offset := (pageIndex - 1) * pageSize
err := e.SQL("SELECT TOP " + utils.ValueToString(pageSize, "") + " me_supplygroup.* FROM me_supplygroup " + where + " AND (convert(varchar(10),finr)+convert(varchar(40),supplygroupid) NOT IN (SELECT TOP " + utils.ValueToString(Offset, "") + " convert(varchar(10),finr)+convert(varchar(40),supplygroupid) FROM me_supplygroup " + where + " ORDER BY credatuz DESC)) ORDER BY credatuz DESC").Find(&data)
pcount := new(MeSupplyGroup)
count, err := table.Count(pcount)
if err != nil {
return nil, 0, err
}
for k, _ := range data {
data[k].Clipped()
}
return data, int(count), nil
}